9

我有点好奇为什么这不起作用

JavaScript:

function evaluate(){
    console.log(42);
}

HTML:

<a onclick="evaluate()">Click Me!</a>

是否在 html 端的某处评估保留关键字?

4

3 回答 3

3

“evaluate”不是保留关键字,但是当它用于内联事件处理程序时,它恰好与文档的evaluate函数发生冲突(对象在对象之前document处理程序范围链内)。如果您不想更改函数名称,只需在其前面添加上下文,即windowwindow

<a onclick="window.evaluate()">Click Me!</a>

于 2013-02-07T16:10:37.597 回答
3

document.evaluate解析 XML 是必需的,请参阅此处 MDN 中的参考

于 2013-02-07T16:11:23.727 回答
3

Evaluate 不是JavaScript 中的保留字document.evaluate,用于评估XPath表达式。

evaluate如果您使用一种不那么突兀的方法来附加您的事件处理程序,您仍然可以命名您的函数:

var evaluate = function (){
    console.log(42);
}

document.addEventListener('click', evaluate, false);

例子

于 2013-02-07T16:33:55.580 回答