传递函数中的局部变量
问题描述:
通过单击以下DIV,什么都不会发生。 错误在哪里?传递函数中的局部变量
<div onclick="function dummy(that) { alert(that.toString())}" class="next">></div>
请大家帮忙。
答
您正在定义dummy
但未调用它。我不认为它是这样工作的,而不是在HTML onclick
属性中。
我建议你移动假()到一个单独的代码块:
<script type='text/javascript'>
function dummy(that) { alert(that.toString())}
</script>
然后:
<div onclick="dummy(this);" class="next">></div>
或编程附加功能,像这样:
document.getElementById("myDummyDIV").onclick = function(event) { ..... }
答
这应该这样做:
<div onclick="dummy(this);" class="next"></div>
<script type="text/javascript">
function dummy(that) {
alert(that.toString());
}
</script>
答
这是一个函数声明,而不是调用。
你可以做这样的事情:
(function dummy(that) { alert(that.toString())}) (event);
和完整的HTML是:
<div onclick="(function dummy(that) { alert(that.toString())})(event);" class="next">></div>
答
你不要在这里创建功能 你可以像下面
<div onclick="alert(that.toString())" class="next">></div>
答
这实际上很愚蠢。你声明的函数作为一个函数是不可用的,除非你打算做一些更好的东西,并从其他方法的其他方法调用此链接的click事件。但是,如果你一意孤行换皮一心想把函数声明在onclick事件,这是可以做到这样:
<div onclick="(function dummy(that) { alert(that.toString())})();" class="next">></div>
你最终把功能在它自己的块,然后最后的()会告诉解析器执行它。