抉择不触发函数id,改个名就好了

选择不触发函数id,改个名就好了
选择不触发函数id,改了个名就好了。
这是为什么啊?
百度了一下js的函数命名规范,也没说不许i开头啊?


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<script>
function id(){
alert('a');
}
</script>
</head>
<body>
<select name="" id="pro" onchange="id();">
<option value="-1">请选择</option>
<option value="0">北京</option>
<option value="1">安徽</option>
</select>
<select name="" id="city" ></select>
</body>
</html>
------解决思路----------------------
问题不是i开头。而是id关键词在文档模型里是一个属性,造成访问不到。
------解决思路----------------------
写函数名都不要用敏感的单词,比如id   class   this  等   这是最基本的!
没有为什么,js创始人就是这么设计的!
------解决思路----------------------
函数、变量名最好不要和关键字、元素ID一样
------解决思路----------------------
这是内联事件上下文环境的问题
除了函数内的局部上下文环境外,一般情况只有window一个上下文环境。如:window.alert()中的window可以省略。

但在内联事件中却有this,document和window三重上下文环境,这就造成document.getElementById()中的document可以省略,同样的this.id也可以省略this只写id。由于this环境高于window环境,只写id,访问的是this中id属性,而不是
window下的id函数