gpt4 book ai didi

javascript - 在 JavaScript 中将参数从一个函数传递到另一个函数

转载 作者:行者123 更新时间:2023-12-02 19:25:05 25 4
gpt4 key购买 nike

我有日期值

  for(i=0;i<data['before'].length;i++) {
var day = data['before'][i];
var dte = new Date(day);

我正在尝试从 java 脚本动态地将日期显示为 div 中的链接。单击链接后,我将 dte 作为对象传递给 date_click 函数。

$('#before_dates').append('<tr><td><a onclick="date_click('+dte+');" href="javascript:void(0)">'+dte.toDateString()+'</a></td></tr>');

点击链接后

function date_click(date){
alert("Hi..."+dte);
}

我收到以下错误:

错误:语法错误:参数列表后缺少 )
源代码:date_click(2012 年 8 月 31 日星期五 00:00:00 GMT+0100 (IST));

我知道这是一个小错误,但我想不出办法来做到这一点。任何帮助都会很棒。

谢谢

最佳答案

当你写下:

'...date_click('+dte+')';

你实际得到的是:

'...date_click(' + dte.toString() + ')';

即:

date_click(Fri Aug 31 2012 00:00:00 GMT+0100 (IST))

这显然不是有效的 JS,因此报告了错误。

您似乎正在尝试传递实际的 dte 变量,而不是它的字符串表示形式。为此,您只需编写不带任何引号的 date_click(dte) 即可,但这只有在 dte 是全局变量时才有效(这些都是不好的!)。

但是您有 jQuery,所以当您可以使用正确的 DOM3 事件处理程序时,不要使用 DOM0“内联”事件处理程序。它们会导致引用问题(正如您在此处遇到的那样),并且除非指定的函数位于“全局”范围内,否则它们也不起作用。

根据更新的问题,使用data()将当前对象绑定(bind)到事件处理程序。

function date_click(ev) {
ev.preventDefault();
var date = $(this).data('date');
alert("Hi..." + date);
}

for (i = 0; i < data['before'].length; ++i) {
var day = data['before'][i];
var dte = new Date(day);
var $a = $('<a>', { text: dte.toDateString() }).data('date', dte);
var $tr = $('<tr>').appendTo('#before_dates');
var $td = $('<td>').appendTo($tr).append($a);
}

$('#before_dates').on('click', 'a', date_click); // use event delegation

请注意,现在这相当冗长,但它是构建所需 DOM 元素的一种简洁方法。

关于javascript - 在 JavaScript 中将参数从一个函数传递到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com