奇怪的HTML验证错误

too*_*les 0 javascript

我从这篇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>
Run Code Online (Sandbox Code Playgroud)

错误是

错误:字符";" 不允许在属性规范列表中

错误:元素"sfEls.length"未定义

从线

for(var i = 0; i

错误:省略了"sfEls.length"的结束标记,但指定了OMITTAG NO

从结束脚本标记

SLa*_*aks 6

您的Javascript包含XML(<&)的特殊字符.
因此,它是无效的标记.

您需要将其包装在CDATA部分中,这将阻止XML解析器解析其内容:

<script type="text/javascript">
    //<![CDATA[
    ...
    //]]>
</script>
Run Code Online (Sandbox Code Playgroud)

注释是必要的,以防止CDATA部分在无法识别它的浏览器中导致Javascript语法错误