较小的运算符会在javascript代码中出错

时间:2013-07-07 11:55:00

标签: javascript jsf

我的xhtml文件中有一个javascript代码。这是:

<h:head>
    <h:outputStylesheet library="css" name="styles.css"  /> 
     <script>
            function dataTableSelectOneRadio(radio) {
                var id = radio.name.substring(radio.name.lastIndexOf(':'));
                var el = radio.form.elements;
                for (var i = 0; i < el.length; i++) {
                    if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) {
                        el[i].checked = false;
                    }
                }
                radio.checked = true;
            }
        </script>
</h:head>

问题是,在for循环中它给出了“&lt;”的错误运营商说“元素的内容必须包含格式良好的字符数据或标记。”我认为它看到了“&lt;”作为一个html元素,即“身体,HTML等,但我不确定。我怎么能解决这个问题?

由于

编辑:我现在尝试了这个,但仍然是一个错误。您看到了语法错误吗?

<script>
            function dataTableSelectOneRadio(radio) {
                var id = radio.name.substring(radio.name.lastIndexOf(':'));
                var el = radio.form.elements;
                for (var i = 0; i &lt; el.length; i++) {
                    if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) {
                        el[i].checked = false;
                    }
                }
                radio.checked = true;
            }
        </script>

错误说:

myaccounts.xhtml:5:52 Expected ) but found ;
                for (var i = 0; i &lt; el.length; i++) {
                                                ^

myaccounts.xhtml:5:57 Expected ; but found )
                for (var i = 0; i &lt; el.length; i++) {
                                                     ^

2 个答案:

答案 0 :(得分:3)

尝试使用 CDATA 让XML解析器不读取javascript内容,您的代码将是这样的:

<h:head>
    <h:outputStylesheet library="css" name="styles.css"  /> 
    <script>
        // <![CDATA[
        function dataTableSelectOneRadio(radio) {
            var id = radio.name.substring(radio.name.lastIndexOf(':'));
            var el = radio.form.elements;
            for (var i = 0; i < el.length; i++) {
                if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) {
                    el[i].checked = false;
                }
            }
            radio.checked = true;
        }
        // ]]>
    </script>
</h:head>

答案 1 :(得分:1)

Facelets是一种基于XML的视图技术。字符<>&是XML中的特殊字符。它们需要分别由&lt;&gt;&amp;替换。

for (var i = 0; i &lt; el.length; i++) {
 // your code
}

最好将整个JS代码包装在<![CDATA[ block