调用javascript函数onclick =“fn1()”和onclick =“javascript:fn1()”时有什么区别吗

时间:2012-03-07 04:22:09

标签: javascript

直接调用函数onclick =“fn1()”和onclick =“javascript:fnq()”之间有什么区别?

最好的方法是什么?

由于

3 个答案:

答案 0 :(得分:2)

它们在功能上是等同的。哪个最好?都不是。不要混淆标记和JavaScript。相反,将函数绑定到元素:

<div id="element"></div>

现在有多种方法可以做到这一点:

// Find element
var el = document.getElementById('element');

// Option 1:
el.onclick = function() {
    fn1();
};

// Or by reference:
el.onclick = fn1;

// Option 2:
if (el.addEventListener) {
    el.addEventListener('click', fn1, false);
} else {
    el.attachEvent('click', fn1);
}

答案 1 :(得分:2)

区别在于onclick="fn1()"表示您的想法(“运行函数fn1()”),而onclick="javascript:fnq()"正在使用javascript:作为无用的label对于语句fnq()。请注意,你也可以写onclick="foobarbaz:fnq()",它会做同样的事情; javascript绝对没有什么特别之处。 (您可能会考虑在javascript:中使用<a href="javascript:fnq()">作为网址协议,其中javascript:http:具有相同的通用目的:它表示的类型URL。)

其中,onclick="fn1()"是更好的做法,尽管通常最好从JavaScript附加点击处理程序,而不是将其放在HTML中。

答案 2 :(得分:0)

我相信W3C已经贬低了javascript inline。

当您尝试将两种不同的脚本语言与事件处理程序一起使用时,仅使用内联javascript。