我有一个简单的HTML
<p id="skills">Skills</p>
当我调用(使用JQuery)时,在Firefox 3.6.3中:
$("#skills")[0].innerHTML = "some new text"
Firefox将其呈现为
<p id="skills"><a xmlns="http://www.w3.org/1999/xhtml">some new text</a></p>
世界上哪个链接来自??
(注意通过使用JQuery调用$("#skills").html("some new text")
来发生同样的事情)
答案 0 :(得分:7)
这不是Firefox中的一个错误,你首先要在那里获得额外的<a></a>
...我会禁用你所有的插件并再试一次,你的安装上特定的东西会干扰这里。
我假设您正在使用Firebug查看此内容,上面给出的确切示例(页面中没有其他内容)是否也执行相同的操作?您可以在此处尝试演示:http://jsfiddle.net/Wcjk9/
你的例子确实在Firefox中显示了一些奇怪的行为,然而它是“允许”这样做的。由于您的HTML无效,浏览器可以并且确实在这里提供一些时髦的行为。浏览器中的解析器/脚本引擎可以假设您拥有有效的HTML,例如唯一ID。如果您的HTML无效,那么......它不能承担责任。我必须包含this quote:
有两次我被问到,'请问巴贝奇先生,如果你把错误的数字输入机器,那么正确的答案会出来吗?'我无法正确地理解可能引发这样一个问题的想法混淆。
忽略jsbin添加的错误you can see the problem here(第一个验证错误)。不允许在锚点内部使用块元素。您可以有一个内联元素,如果您将示例中的<p>
替换为<span>
,您将拥有有效的HTML ...并且这种奇怪的行为会消失:)
答案 1 :(得分:1)
我怀疑你身边有一个插件,或者你的HTML有点格式错误。尝试通过验证程序(http://validator.w3.org)禁用插件并运行HTML。
此外,如果您打算更改的是文本而不添加任何HTML,我建议使用text函数而不是html函数(虽然我怀疑这会解决您的问题,只是说它是适合工作的工具)
答案 2 :(得分:1)
原来我的示例代码排除了实际问题的部分,这是一个显示问题的工作示例页面。当您更改链接中任何元素的html时,它将所有文本包装为
<a xmlns="http://www.w3.org/1999/xhtml">THE TEXT</a>
在我的演示中,当您单击“测试”链接时,它将用以下内容替换技能中的html:
<a xmlns="http://www.w3.org/1999/xhtml">some new text</a>
这可能不是一个“bug”,但似乎firefox是唯一能够做到这一点的浏览器。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
function test() {
$("#skills")[0].innerHTML = "some new text"
}
</script>
</head>
<body>
<a href="#" onclick="test()">test</a>
<a href="http://google.com">
<p id="skills">Skills</p>
</a>
</body>
</html>