我的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 < 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 < el.length; i++) {
^
myaccounts.xhtml:5:57 Expected ; but found )
for (var i = 0; i < el.length; i++) {
^
答案 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中的特殊字符。它们需要分别由<
,>
和&
替换。
for (var i = 0; i < el.length; i++) {
// your code
}
最好将整个JS代码包装在<![CDATA[
block。