<html>
<head>
<script type="text/javascript">
function testThis() {
alert(this.button.ele);
return false;
}
</script>
</head>
<body>
<div align="center">
<input type="button" value="点击这里给出提示" name="button" onclick="testThis()" ele="just test"/>
</div>
</body>
</html>
这串代码,在IE10和IE8弹出的内容不同,在谷歌火狐弹不出对话框,请问这是兼容问题吗?
GoogleIE10火狐兼容

解决方案 »

  1.   

    首先是this,由于testThis不是类的方法,所以this指向window。
    其次,直接使用name来指定element是IE独有的方式,并不是规范中的内容,所以谷歌火狐都不支持,要兼容,请使用规范的 document.getElementsByName("domId")[0];因为name可以有多个,所以getElementsByName返回的是一个类数组的对象。三,要得到element的属性,请使用规范的getAttribute();
    function testThis() {
    var bb = document.getElementsByName("button")[0];
    alert(bb.getAttribute("ele"));
    return false;
      

  2.   

    <html>
    <head>
    <script type="text/javascript">
    function testThis() {
    alert(this.button.ele);
    return false;
    }
    </script>
    </head>
    <body>
    <div align="center">
    <input type="button" id="test" value="点击这里给出提示" name="button" onclick="testThis()" ele="just test"/>
    </div>
    </body>
    </html>这里window.elementName的方式是IE专有的。解决方法如上面这位大哥的。但是最好给button加上一个id。
    这样在你变更页面的时候不容易出现bug。
    function testThis() {
    var bb = document.getElementsById("test");
    alert(bb.getAttribute("ele"));
    return false; //而且我觉得这句没有必要,button没有什么默认行为,看你也不是为了阻止冒泡。
    //return false一般用来同时组织冒泡行为和默认行为的。
      

  3.   

    非常感谢二位,还以为window.elementName是规范的方法呢。谢谢了