我从这篇JavaScript获得了一个奇怪的HTML验证错误任何帮助,我认为它可能导致我正在使用的滑块函数中的错误...
<script type="text/javascript" charset="utf-8">
sfHover = function() {
var sfEls = document.getElementById("nav2").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>
错误是
错误:字符“;”不允许进入 属性规范列表
和
错误:元素“sfEls.length” 未定义
来自
行for(var i = 0; i
和
错误:“sfEls.length”的结束标记 省略,但指定了OMITTAG NO
来自结束脚本标签
答案 0 :(得分:6)
您的Javascript包含XML的特殊字符(<
和&
)
因此,它是无效的标记。
您需要将其包装在CDATA部分中,这将阻止XML解析器解析其内容:
<script type="text/javascript">
//<![CDATA[
...
//]]>
</script>
这些注释是必要的,以防止CDATA部分在无法识别它的浏览器中导致Javascript语法错误