`
linwei_211
  • 浏览: 188110 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

setAttribute()的使用方法与ie不兼容onclick事件解决方法

js 
阅读更多

setAttribute()的使用方法与ie不兼容onclick事件解决方法


1.element要用getElementById or ByTagName来得到,

2.setAttribute("class", vName)中class是指改变"class"这个属性,所以要带引号。

3.IE中要把class改成className,.....IE不认class,所以最好写两句,都用上吧。

W3C DOM - {setAttribute()}

 

setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。

1、关于class和className
class属性在W3C DOM中扮演着很重要的角色,但由于浏览器差异性仍然存在。使用setAttribute("class", vName)语句动态设置
Element的class属性在firefox中是行的通的,在IE中却不行。因为使用IE内核的浏览器不认识"class",要改用"className";
同样,firefox 也不认识"className"。所以常用的方法是二者兼备:
element.setAttribute("class", vName);
element.setAttribute("className", vName);  //for IE

 

2、setAttribute()的差异
      我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题。
var bar = document.getElementById("foo");
bar.setAttribute("onclick", "javascript:alert('This is a test!');");


     这里利用setAttribute指定e的onclick属性,简单,很好理解。但是IE不支持,IE并不是不支持setAttribute这个函数,而是不支持用setAttribute设置某些属性,例如对象属性、集合属性、事件属性,也就是说用setAttribute设置style和onclick这些属性在IE中是行不通的。为达到兼容各种浏览器的效果,可以用点符号法来设置Element的对象属性、集合属性和事件属性。

程序代码document.getElementById("foo").className = "fruit";
document.getElementById("foo").style.cssText = "color: #00f;";
document.getElementById("foo").style.color = "#00f";
document.getElementById("foo").onclick = function () { alert("This is a test!"); }


//注意1.这里的function这一段千万不要画蛇添足用引号引上,不信你可以试下,引上点click就没反应了
//注意2.onclick后面的方法不能传参数,例如要去调方法set_top_visible,需要参数
错误的写法:img.onclick = set_top_visible("none");
正确的写法:img.onclick = function(){set_top_visible("none");}
    
 function set_top_visible(v){
     (!v) && (v = "block");
            try
            { 
                document.getElementById("top_tooltip").style.display=v;
            }
            catch(e){}
        }
例如要去调方法showMsg,不需要参数
错误的写法:img.onclick = showMsg();
正确的写法:img.onclick = showMsg;
 function showMsg(){
     alert('hello!');
        }   

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics