setAttribute()的使用方法与ie不兼容onclick事件解决方法
2009-07-17 13:27
555 查看
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!"); }
例如:
程序代码
<script language="javascript">
function Testlink(){
//var alink=document.getElementsByTagName("A")[0].href;
var alink=document.getElementsByTagName("A");
for (i=0;i<alink.length;i++){
alink[i].setAttribute("class", " ");
alink[i].setAttribute("className", " ");
}
window.event.srcElement.setAttribute("class", "Selecta");
window.event.srcElement.setAttribute("className", "Selecta"); //for IE
}
function Setonclick(){
var alink=document.getElementsByTagName("A");
for (i=0;i<alink.length;i++){
//alert(i)
alink[i].onclick=Testlink;// 这个函数名不能带() 即Testlink();
}
}
</script>
程序代码
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" class="Selecta" id="Testlink">链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
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!"); }
例如:
程序代码
<script language="javascript">
function Testlink(){
//var alink=document.getElementsByTagName("A")[0].href;
var alink=document.getElementsByTagName("A");
for (i=0;i<alink.length;i++){
alink[i].setAttribute("class", " ");
alink[i].setAttribute("className", " ");
}
window.event.srcElement.setAttribute("class", "Selecta");
window.event.srcElement.setAttribute("className", "Selecta"); //for IE
}
function Setonclick(){
var alink=document.getElementsByTagName("A");
for (i=0;i<alink.length;i++){
//alert(i)
alink[i].onclick=Testlink;// 这个函数名不能带() 即Testlink();
}
}
</script>
程序代码
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" class="Selecta" id="Testlink">链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
<p><a href="#" >链接状态测试</a></p>
相关文章推荐
- setAttribute()的使用方法与ie不兼容onclick事件解决方法
- setAttribute()使用方法与IE兼容解决方法
- IE兼容问题解决根源:深刻理解hasLayout属性,原理与使用方法
- 使用jQuery的hover事件在IE中不停闪动的解决方法
- 使用jQuery的hover事件在IE中不停闪动的解决方法
- JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
- 使用jQuery的hover事件在IE中不停闪动的解决方法
- jQuery对象与dom对象(转载)和setAttribute()的使用方法与ie不兼容
- 兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法
- JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
- Javascript JQuery 图片预加载load事件IE不兼容的问题的解决方法
- 解决jquery 修改onclick事件后IE兼容模式下立刻执行的问题
- IE兼容问题解决根源:深刻理解hasLayout属性,原理与使用方法
- IE8的JavaScript点击事件(onclick)不兼容的解决方法
- IE8的JavaScript点击事件(onclick)不兼容的解决方法
- ie中按钮onclick等事件失效。提示提示对象不支持此操作。在谷歌浏览器中又能使用解决办法
- IE兼容问题解决根源:深刻理解hasLayout属性,原理与使用方法
- PPT 链接图片 默认使用IE打开的解决方法
- 关于IE 使用AJAX报错:“Stream ended unexpectedly”的解决方法
- .ocx注册失败以及IE使用<object>获取不到.ocx方法的解决办法