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").οnclick= 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].οnclick=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>


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiafugui/archive/2009/07/17/4356578.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章