定义JavaScript调用时,如下所示:
<input type="button" onclick="someJavaScriptFunction" />
写实际通话的最佳方式是什么?我见过很多方法:
javascript:someJavascriptFunction();
或
justSomeJavaScriptFunction();
或
withoutTheSemicolon()
任何方法都有任何好处或警告吗?我意识到在某些情况下使用addEventListener
会更灵活。
答案 0 :(得分:5)
最佳实践本身是使用JavaScript本身附加事件:
Firefox,Chrome,Safari,Opera ......
document.getElementById('someID').addEventListener('click', function() {
function1();
function2();
function3();
});
IE:
document.getElementByID('someID').attachEvent('onclick', function() {
function1();
function2();
function3();
});
将两者结合起来使其发挥作用。
此外,使用MooTools或JQuery等预制框架可以使这更容易。
答案 1 :(得分:4)
如果您想要最佳练习,请将标记与脚本内容分开。在script
元素中分配事件处理程序。正如您所说,使用addEventListener
是实现此目的的一种方法,但如果您希望在版本9之前支持Internet Explorer版本,则必须使用attachEvent
。
但是,分配onevent
属性是完全有效的。例如:
<script>
window.onload = function() {
document.getElementById('yourID').onclick = function() {
alert('element clicked');
};
};
</script>
如果您只有几件物品,这可能适合您的目的。
答案 2 :(得分:2)
javascript:someJavascriptFunction();
我们在javascript:
属性或书签地址字段(bookmarklets)中使用href
作为网址。
例如:
<a href="javascript:myFunction()">click me</a>
我们使用分号附加多个JavaScript指令:
<span onclick="alert('first');alert('second')">click me</span>
addEventListener
允许将许多函数附加到同一事件:
element.addEventListener ('click', firstFunction);
element.addEventListener ('click', secondFunction);
答案 3 :(得分:1)
有或没有分号没有区别,但是事件实际上是一行javascript而不仅仅是一个函数名,所以你可以使用分号来添加多个函数,如下所示:
<input type="button" onclick="function1();function2();function3();" />
我不确定javascript:会起作用,就像你在链接上附加一个函数作为href,而不是像下面这样的事件处理程序:
<a href="javascript:function1();function2();function3();" >A link</a>
答案 4 :(得分:1)
javascript:someJavascriptFunction();
明确声明使用javascript,如果您可能有多种/不同的脚本类型,例如ECMA Script。
someJavascriptFunction()
就可以了。
someJavascriptFunction();doSomethingElse();return false;
用于连结/有多个陈述的分号。
所以没有'最好'的方式,只有最有意义的方式,并且是你的首选方案(在大多数情况下)。
答案 5 :(得分:0)
addEventListener是最好的方法