Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在onclick事件中将参数传递给函数_Javascript - Fatal编程技术网

Javascript 在onclick事件中将参数传递给函数

Javascript 在onclick事件中将参数传递给函数,javascript,Javascript,我试图动态构建一些HTML,并为链接的onclick事件分配一个函数。这是我的密码 link = document.createElement("a"); link.setAttribute("href", "#"); link.onclick = function(){someFunction(myObject.id);}; link.appendChild(document.createTextNode("Click Me!")); 我的研究表明,我将我的函数调用封装在一个匿名函数中,就像

我试图动态构建一些HTML,并为链接的
onclick
事件分配一个函数。这是我的密码

link = document.createElement("a");
link.setAttribute("href", "#");
link.onclick = function(){someFunction(myObject.id);};
link.appendChild(document.createTextNode("Click Me!"));
我的研究表明,我将我的函数调用封装在一个匿名函数中,就像我所做的那样。但是我发现,当这段脚本运行时,我的函数被调用,而不是在click事件上。这似乎是一个常见的问题,但我遵循所有的建议,我已经找到了,但没有任何效果

非常感谢您的帮助或指点


B先生。

您发布的代码运行良好-我刚刚测试过。下面是一些可以寻找的可能性

  • 你在哪里定义了一些函数?它被称为定义吗
  • 你在其他地方引用过函数吗?也许这就是引发这一问题的原因
  • 有没有理由不使用jQuery这样的javascript库来实现这一点?简化了很多
  • 一种调试方法是将该行更改为:

    link.onclick = function(){alert('test'); someFunction(myObject.id);};
    

    警报弹出了吗?我的猜测不是,建议在上面的第1和第2条。请随意发布更多代码,我们可以在其他地方查找错误。

    您发布的代码工作正常-我刚刚测试了它。下面是一些可以寻找的可能性

  • 你在哪里定义了一些函数?它被称为定义吗
  • 你在其他地方引用过函数吗?也许这就是引发这一问题的原因
  • 有没有理由不使用jQuery这样的javascript库来实现这一点?简化了很多
  • 一种调试方法是将该行更改为:

    link.onclick = function(){alert('test'); someFunction(myObject.id);};
    

    警报弹出了吗?我的猜测不是,建议在上面的第1和第2条。请随意发布更多代码,我们可以在其他地方查找错误。

    也许可以尝试以下替代方法:

    function someFunction(id) {
        return function() {
            alert(id);
        };
    }
    
    link = document.createElement("a");
    link.setAttribute("href", "#");
    link.onclick = someFunction(myObject.id);
    link.appendChild(document.createTextNode("Click Me!"));
    

    也许可以尝试以下替代方法:

    function someFunction(id) {
        return function() {
            alert(id);
        };
    }
    
    link = document.createElement("a");
    link.setAttribute("href", "#");
    link.onclick = someFunction(myObject.id);
    link.appendChild(document.createTextNode("Click Me!"));
    

    这很奇怪,在单击链接之前不应该调用someFunction()。我在JSFIDLE中测试了它,它工作正常:我也尝试过。。。addEventListener(“单击”,function(){someFunction(object.id);},false);好的,首先,我想这可能是我正在调用的函数,就像我用调用
    alert
    来替换对我函数的调用一样,它工作得很好。下一个问题是,由于对象来自数组,我正在构建一个链接列表,
    object.id
    总是一样的,所以在某个地方出了问题。我在你的另一篇文章中看到,你对Javascript是新手。要保持理智,请查看jQuery。我在Javascript体验的5年中发现了它,并哀叹没有更早地发现它。这很奇怪,在单击链接之前不应该调用someFunction()。我在JSFIDLE中测试了它,效果很好:我也尝试过。。。addEventListener(“单击”,function(){someFunction(object.id);},false);好的,首先,我想这可能是我正在调用的函数,就像我用调用
    alert
    来替换对我函数的调用一样,它工作得很好。下一个问题是,由于对象来自数组,我正在构建一个链接列表,
    object.id
    总是一样的,所以在某个地方出了问题。我在你的另一篇文章中看到,你对Javascript是新手。要保持理智,请查看jQuery。我在Javascript使用5年后发现了它,并为没能早点发现而感到遗憾。警报正在弹出。我想,正如我前面提到的,问题在于我调用的函数。我现在不使用jQuery,因为我对javascript非常陌生,我想先了解基本知识。在你在主要帖子上的评论中,你说用警报交换很好。因为这实际上和我在这里做的是同一件事,这已经变得相当混乱:)你能发布你的整个代码吗,或者,至少,一个更大的块吗?我想我现在正在对它进行排序,我已经放入了大量警报,以便我知道用什么参数调用什么。我认为我最初的假设是在脚本的这一部分调用函数是错误的,我的函数只是做了一些出乎意料的事情,这似乎是事实。我现在有另一个问题(可能没有帮助!!)就是基本上错误的参数被传递到了我的函数中。我在其他地方看到过这一点,在这里,函数被传递给正在迭代的数组中最后一项的值。我就知道了!:)为了帮助调试,您可能还需要研究Firebug及其控制台日志记录功能。比警报简单得多。我发现Chrome中的javascript控制台窗口也相当不错,但我会调查firebug,干杯。你知道为什么我的函数会被传递到数组中的最后一项吗?警报正在弹出。我想,正如我前面提到的,问题在于我调用的函数。我现在不使用jQuery,因为我对javascript非常陌生,我想先了解基本知识。在你在主要帖子上的评论中,你说用警报交换很好。因为这实际上和我在这里做的是同一件事,这已经变得相当混乱:)你能发布你的整个代码吗,或者,至少,一个更大的块吗?我想我现在正在对它进行排序,我已经放入了大量警报,以便我知道用什么参数调用什么。我认为我最初的假设是在脚本的这一部分调用函数是错误的,我的函数只是做了一些出乎意料的事情,这似乎是事实。我现在有另一个问题(可能没有帮助!!)就是基本上错误的参数被传递到了我的函数中。我在其他地方看到过这一点,在这里,函数被传递给正在迭代的数组中最后一项的值。我就知道了!:)为了帮助调试,您可能还需要研究Firebug及其控制台日志记录功能。比警报简单得多。我发现Chrome中的javascript控制台窗口也相当不错,但我会调查firebug,干杯。你知道为什么我的functi吗