【发布时间】:2012-01-23 14:49:39
【问题描述】:
我的脚本函数是在 XHTML 页面上的 JSF2 表单中定义的,以下代码部分会导致问题:
<script type="text/javascript">
function myFunction(){
var checkboxes = document.getElementsByName('mycheckboxes');
if(checkboxes.length > 0){
for (var i=0; i<checkboxes.length; i++){
var checkbox = checkboxes[i];
}
}
}
</script>
当尝试访问 FireFox 8 中的页面时,它会打印异常:
元素类型“checkboxes.length”必须后跟属性规范,“>”或“/>”
这个错误是什么意思?
另一个问题:脚本是在页面渲染之前执行的吗?因为我的复选框是在页面的渲染阶段加载到页面中的(使用 JSF <ui:repeat>),所以我的猜测是当变量 checkboxes 不为空时,我必须创建一个条件来执行代码,对吗?
【问题讨论】:
-
脚本在解析时执行,因此它可能在 DOM 元素存在之前执行。
-
您的文档是 XHTML 还是您忘记将脚本放入
<script>标记? -
该错误看起来像是试图将您的 JavaScript 解释为 HTML。究竟是什么给出了错误?浏览器?还是 HTML 验证器? JavaScript 如何包含在
script元素或单独的 JavaScript 文件中? -
我不知道 JSF,但是你的 Javascript 有
//<![CDATA[和//]]>吗?它似乎将<checkboxes.length解释为标签。 -
您确定它在脚本中吗?这听起来像一个 HTML 错误。实际上,听起来有点……很奇怪。
标签: javascript html jsf