JavaScript函数名alt()
如果函数名为“alt”,我会得到错误:“alt不是函数”。其他名字都有用。代码如下:JavaScript函数名alt(),javascript,html,function,Javascript,Html,Function,如果函数名为“alt”,我会得到错误:“alt不是函数”。其他名字都有用。代码如下: <!DOCTYPE HTML> <html> <head> </head> <body> <input type="button" value="click me" onclick="alt('dato',28);"/> <script type="text/javascript
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<input type="button" value="click me" onclick="alt('dato',28);"/>
<script type="text/javascript">
window.onload = function(){
alt = function(name,age){
alert(name + " " + age);
}
}
</script>
</body>
</html>
window.onload=函数(){
alt=函数(名称、年龄){
警报(姓名+“”+年龄);
}
}
请将函数名从“alt”更改为任何其他允许的名称,以确保其正常工作
有人能解释发生了什么吗?发生这种情况的原因是在
onclick
属性中,this
指的是附加了该属性的元素。现在,alt
是一个标准属性名,它将作为按钮的未设置项开始,因为您没有在HTML中指定alt
属性(并且alt
属性对于input
,不需要添加)
简而言之,alt
不是指在脚本中设置的全局变量window.alt
,而是指元素的alt
属性,该属性从未设置开始
因此,当您运行onclick=“alt('dato',28);”
时,它隐式地被解释为:onclick=“this.alt('dato',28);“
要获取在全局范围中设置的alt
,而不是作为每个HTML元素一部分的alt
,您需要显式地进入全局范围,如下所示:
onclick="window.alt('dato',28);"
不能将html属性名称用作属性值中的函数,因为它引用属性值 比如说
<input type="button" value="click me" onclick="console.log(value)" />
问题是,由于使用了,全局函数
window.alt
被HTMLInputElement.prototype.alt
此行为的解释如下所示:
词汇环境范围
- 重命名你的函数
函数替换(姓名、年龄){ 警报(姓名+“”+年龄); }
我也在想类似的事情。现在一切都清楚了。谢谢<input type="button" value="click me" onclick="console.log(this.value)" />