attachEvent 在ie8 兼容是怎么写的?

var btn = document.getElementById('butn');

function change () {
    if (this.value === '显示') {
        this.value = '隐藏'
    } else {
        this.value = '显示'
    }
    alert(this);
}
if(btn.addEventListener){
    btn.addEventListener('click', change);
}else if(btn.attachEvent){
    btn.attachEvent("click",change);
    alert("出来没"); //ie8兼容 alert这个出来了但是 这块没有反应。这是为什么呢?
}


<input type="button" id="butn" value="显示/隐藏" />
<div>标题</div>
<div>内容</div>
阅读 5.2k
4 个回答

<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
  <title></title>
  <meta charset="UTF-8">
</head>
<body>
 
<input type="button" id="butn" value="显示/隐藏" />
<div>标题</div>
<div>内容</div>
<script type="text/javascript">

var btn = document.getElementById('butn');

function change () {
 
    if (btn.value === '显示') {
        btn.value = '隐藏'

    } else {
        btn.value = '显示'
    }
 
}
if(btn.addEventListener){
    btn.addEventListener('click', change);
}else if(btn.attachEvent){
    btn.attachEvent("onclick",change);
    //alert("出来没"); //ie8兼容 alert这个出来了但是 //这块没有反应。这是为什么呢?
}
</script>



 
</body>
</html>

ie是onclick 另外 不要用this

新手上路,请多包涵

attachEvent的时候 "click" 前面要加个"on"

btn.attachEvent("onclick",change); 试一下

看了一下你的chage函数里还调用了this

这样的话,要改成
btn.attachEvent("onclick",function(){ change.call(btn)});

才会正常的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题