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!');
}
分享到:
相关推荐
博客园闪存分页是用JavaScript生成的,今天发现在IE8下点击页码不能翻页,翻页操作是在当前页码的...由于IE8不支持setAttribute方法,这里添加的onclick事件处理程序并未添加上。 后来改为jQuery的attr方法: 代码如
NULL 博文链接:https://rogerfederer.iteye.com/blog/1938725
JavaScript的setAttribute存在兼容性问题,下面与大家分享下具体的解决方法,感兴趣的朋友可以参考下
主要介绍了javascript中setAttribute()函数使用方法及兼容性的相关资料,需要的朋友可以参考下
假设,我们要使用setAttribute来... 在IE下使用 如果在IE下给DOM setAttribute(“class”) 使用IE Developer看结构会发现,DOM上面显示了两个class出来… 原来IE是把自定义的class和系统的class是区分开的。- -b
有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用。 方法一、setAttributevar obj = document....
测试环境(客户端浏览器 ) IE6,IE7, IE8兼容模式, IE8 Firefox 3.6.8, google chrome 5.0.375.125 先来说明两个函数的标准定义。 elementNode.setAttribute(name,value) name 必需。规定要设置的属性名。 value ...
The method setAttribute(String, Object) in the type ServletRequest is not applicable for the arguments (String, double) y2ssh.sg.chp1.action.AddAction.execute(AddAction.java:18) y2ssh.sg.chp1....
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性的说明,需要的朋友可以参考下。
本文实例分析了javascript中setAttribute兼容性用法。分享给大家供大家参考,具体如下: 1:常规属性建议使用 node.XXXX。 2:自定义属性建议使用node.getAttribute(“XXXX”)。 3:当获取的目标是JS里的关键字时建议...
计算机后端-PDO13PDO对象的setAttribute方法.avi
当我们需要动态生成DOM对象的时候,会使用createElement的方法创建。但是在IE和Firefox下,createElement方法是...同时,如果添加属性和事件的话,需要使用setAttribute方法 示例: 代码如下:if($.browser.msie){ var
2.IE不支持以setAttribute()来设置其响应事件,虽然这在W3c标准中是被支持,解决方法是采用标记法引用响应事件的处理程序,然后调用相关的处理函数的匿名函数来设置事件程序。 eg.document.getElementByI
我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题
这里利用 setAttribute 指定 onclick 属性,简单,很好理解, 但是:IE 不支持,IE 并不是不支持 setAttribute 这个函数,而是不支持用 setAttribute 设置某些属性,包括对象属性、集合属性、事件属性,也就是说用 ...