下面是我的代码,它不起作用.将"click()"重命名为"click1()"后,它有效,为什么?
<html>
<head>
<title></title>
<script type="text/javascript">
function click() {
document.getElementById("content").innerHTML = "abc";
}
</script>
</head>
<body>
<button onclick="click()">try it</button><br />
<div id="content"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 13
"onfoo"处理程序属性的字符串值被解释为处理程序函数的主体.换句话说,就好像传递属性的字符串值一样,new Function("event", str)结果是使用的处理函数.
此外,该功能的词法范围如下所示,取自HTML5规范(我仅以浏览器行为的综合描述的方式参考):
词法环境范围
*让Scope成为NewObjectEnvironment(元素的Document,全局环境)的结果.
*如果元素具有表单所有者,则让Scope为NewObjectEnvironment(元素的表单所有者,Scope)的结果.
*让Scope成为NewObjectEnvironment(元素的对象,Scope)的结果.
因此,好像最多有两个嵌套的with块隐式包裹在代码中.因此,在这种情况下,效果是调用这个:
var handler = new Function("event", "with (this) { click(); }");
Run Code Online (Sandbox Code Playgroud)
因为DOM元素上有一个"click"方法,所以<button>该函数是由处理程序调用的,而不是由script标签建立的全局函数.如果"onclick"属性设置为"window.click();" 然后页面正常工作.
| 归档时间: |
|
| 查看次数: |
1783 次 |
| 最近记录: |