onclick'放在JavaScript脚本中时无法工作
onclick doesn't work when put in JavaScript script
为了简单起见:
在JavaScript中:
function f1(idName) {
return document.getElementById(idName);
}
function f2(v1,v2) {
f1('one').innerHTML = v1 + v2;
}
//this doesn't work
f1('one').onclick = function() {
f2(1,2);
};
//this doesn't work, even if this one works I wouldn't use it, since I don't want to write the same function multiple times
f1('one').onclick = function f2(1,2) {
return f1('one').innerHTML = v1 + v2;
}
//this doesn't work
f1('one').addEventListener('click', f2(v1, v2));
在HTML中(效果很好):
<a ... onclick="f2(1, 2)"></a>
<p id="one"><!--output 3--></p>
我知道在JavaScript中,element.onclick=应该是functionName,而不是functionCall();但是对于带参数的函数,解决方案是什么?在这种情况下,我必须使用HTML onclick吗不过我真的很想把onclick放在剧本里。
因为
return document.getElementById('idName'); <---
您正在寻找idName
的id,因为引号使其成为字符串,而不是对变量的引用。
您的控制台中应该有一条错误消息,上面写着类似Cannot read property 'onclick' of null(…)
的内容
它不起作用,因为您没有将适当的函数附加为侦听器
//this doesn't work, even if this one works I wouldn't use it, since I don't want to write the same function multiple times
f1('one').onclick = function f2(1,2) { return f1('one').innerHTML = v1 + v2; }
这个甚至都无效。不能将1和2定义为参数名称。onclick必须设置为一个可以选择性地接受事件的函数。所以你应该:
f1('one').onclick = function(ev){ f2(1,2); }
对于您的第二个
// this doesn't work
f1('one').addEventListener('click', f2(v1, v2));
这个方法不起作用,因为您实际上是在用变量v1和v2计算f2,它返回未定义的值。因此,您正在字符串中附加未定义的侦听器。。。
试着这样想:你告诉一个事件应该运行的函数,而这个事件定义了传递给函数的参数。在这种情况下,大多数事件都会将事件本身作为第一个参数传递,您需要从中找出要做什么。
如果你想变得疯狂而不重复代码,你应该考虑创建一个返回函数(所以元)的函数
删除此行中的单引号。
function f1(idName) {return document.getElementById('idName');}
所以用这个来代替。
function f1(idName) {return document.getElementById(idName);}
原因是您希望将变量idName传递给getElementsById,而不是字符串"idName"
- HTML标记在脚本标记中工作
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 密码输入键脚本在首次使用后无法工作
- prettyPhoto脚本是't工作
- 在pjax完成其工作时加载脚本
- $(document).ready和jQuery(function($)不工作;jQuery已定义,但脚本尚未定义;t进
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- 重新启动jquery脚本后,角度停止工作
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 当源工作表添加了行时,如何编写在一个工作表中添加行的脚本
- Cufon脚本没有'不能在IE9下工作
- java脚本点击事件处理程序不工作
- 更改谷歌工作表中ImportHTML值的脚本
- 为什么这个书签脚本是't在IE工作
- Javascript函数不工作.脚本定位问题
- 谷歌SWIFFY无法在IE9中工作-脚本错误'运行时.js'
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- jQuery最新的库不工作脚本
- window.close()没有't工作-脚本可能只关闭它打开的窗口
- 链接到外部js文件不工作<脚本src="client.js"