2011-06-24 50 views
2

我有一個非常有趣的問題。 我正在寫一個插件,它允許您放大/縮小圖像。我有3個按鈕:關閉(關閉「窗口」),放大,縮小。 按鈕放大/縮小也有禁用版本。它在您達到最小/最大變焦量時激活。IE7和setAttribute()刪除類

如果打開圖片進行縮放,您可以看到一個活動縮小按鈕和一個禁用放大按鈕(因爲我在打開時設置了最大值)。當你第一次點擊縮小按鈕時,放大按鈕應該排除禁用的類。 它在Safara,Chrome,Firefox 3.6/4/5,IE8中運行良好,但在IE7中卻不能運行。

放大按鈕有一個ID和類,我想迫使IE7從元素中刪除特定的類。首先,我使用removeClass(),但它不起作用。然後我使用setAttribute(),它適用於每個瀏覽器,但IE7。

這裏是例子。 因此,當您打開要縮放的圖像時,縮小按鈕的ID =「縮放按鈕」和5個類別:縮放圖標,縮放圖標小,縮放按鈕,縮放按鈕禁用,縮放按鈕禁用。 我想刪除2'禁用'類。所以我用這個:

var elementZoomButtonIn = document.getElementById("zoom-button-in"); 
elementZoomButtonIn.setAttribute("class", "zoom-icon zoom-icon-small zoom-button-in"); 

我試圖在插入非禁用的類之前設置類爲空,但沒有奏效。

此方法在IE7中工作? ( - :

謝謝你,夥計們

+0

這裏有一些有用的信息:http ://reference.sitepoint.com/javascript/Element/getAttribute – stuartdotnet

回答

6

setAttribute()getAttribute()在IE 7一般破碎和更早版本(和更高版本兼容模式)使用元素的className屬性,而不是:

elementZoomButtonIn.className = "zoom-icon zoom-icon-small zoom-button-in"; 

!即使setAttribute()getAttribute()在IE中沒有被破解,但使用等效DOM屬性代替它通常也更容易和更可靠。

+0

哦,我看到了(我討厭那些傢伙,順便說一句:D) 在setAttribute()之前我有一個getAttribute()方法 - 這就是爲什麼它沒有工作。但我使用jQuery的attr(),現在一切正常! 蒂姆,我真的很感謝你!你救了我的命! :-) 祝您有美好的一天! –