我不知道这是一个众所周知的'事情'或什么新的火狐它只是更新自己的版本 - 但无论如何我不知道如何谷歌这个问题,所以我不得不问这里。严格的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