我不知道這是一個衆所周知的'事情'或什麼新的火狐它只是更新自己的版本 - 但無論如何我不知道如何谷歌這個問題,所以我不得不問這裏。嚴格的doctype阻止訪問FireFox中的DOM變量
我在我的DOM,我想直接通過ID訪問DIV,在這樣最簡單的形式:
alert(btnTest.id);
這在所有瀏覽器工作正常,但在Firefox是造成問題的是實際上導致瀏覽器處於一種奇怪的「破碎」狀態。
我得到的錯誤是'btnTest沒有定義'。我在Safari,Internet Explorer或Chrome中沒有遇到這個錯誤。
我認爲我有不匹配的HTML標籤,或JavaScript花括號或其他缺失。最終在剝離所有東西之後,我嘗試刪除DOCTYPE。突然在Firefox(v 3.0.10)中,它開始按預期返回正確的ID。
這是怎麼回事! ??當然,'嚴格'模式應該允許我訪問命名元素,如果不是,那麼爲什麼所有其他瀏覽器都讓我。
注:我可以很容易地解決它與$(「#爲btnTest」)[0] .ID,這正是我要現在要做的,直到我能想出更好的解決方案。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="blueCircles">
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
alert("ID retrieved through jQuery: " + $('#btnTest')[0].id);
alert("ID retrieved by accessing global variable: " + btnTest.id);
});
</script>
</head>
<body>
<div id="btnTest">
</div>
</body>
</html>
btnTest不是變量。這是一個DOM元素的ID。我沒有看到你想要實際做什麼。 document.getElementById(「btnTest」).id是有效的,但毫無意義。您已經知道該ID。 – 2009-04-30 08:14:07
這是嘗試使用DOM元素做某事的大多數試用可能的示例。在這個例子中毫無意義,但正如我所說的,我必須縮小代碼來解決問題。可能會出現一些情況,我想要一個已知元素ID的「編譯安全」字符串,在這種情況下btnTest.id應該是有效的 - 而不是硬編碼「btnTest」。 我想在Firefox 3.0.10中有一個錯誤。此瀏覽器版本在我們的網站上顯示的銷售轉化率也較低。 – 2009-04-30 08:36:01