我正在尝试遍历我的表并找到带有类和复选框的跨度,以查看它是否已被选中。具体取决于其是否已检查并且该跨度类是否存在,将弹出确认框。我不断获取对象或对象null类型的错误。我做错了什么?
部分表格代码:
<td>
<cfif stuff>
<input type="checkbox" name="checkbox" value="checkbox" id="checkbox">
<cfelse>
stuff
</cfif>
hidden field
<cfif stuff>
<span class="isOutForAudit">
hidden field
</span>
</cfif>
</td>
Javascript循环:
var table = document.getElementById("TableName");
for (var i=0; i < table.rows.length; i++)
{
var row = table.rows[i];
if (row.getElementsByClassName("isOutForAudit") != null && row.getElementById("checkbox").checked == true)
{
if (confirm("Stuff") == true)
{
document.myform3.action = Stuff;
}
else
{
return false;
}
}
}
答案 0 :(得分:1)
这对你有用。每个复选框都有magicC类。跨度ID对应于复选框值。
循环遍历所有复选框,使用类名,搜索范围,并发出警报
<table><tr><td>
<input type="checkbox" name="chk" value="0" class="magicC">
<span id="Audit_0">hidden field</span>
</td></tr>
<tr><td>
<input type="checkbox" name="chk" value="1" class="magicC">
no hidden span
</td></tr>
<tr><td>
<input type="checkbox" name="chk" value="2" class="magicC">
<span id="Audit_2">hidden field</span>
</td></tr>
<tr><td><input type="submit" onclick="javascript:VChk();" valu="validate" /></td></tr>
</table>
<script>
function VChk() {
var chks = document.getElementsByClassName('magicC');
for (i=0;i<chks.length;i++) {
if (chks[i].checked) {
if(document.getElementById('Audit_' + chks[i].value) !== null) {
alert('span ' + i + ' exists');
}
}
}
}</script>
示范小提琴:http://jsfiddle.net/1z29yxh9/只有略微不同的功能声明。
所以你可以像这样使用你的cf代码
<td>
<cfif stuff>
<input type="checkbox" name="checkbox" value="#numericID#" id="checkbox" class="magicC">
<cfelse>
stuff
</cfif>
hidden field
<cfif stuff>
<span class="isOutForAudit" id="Audit_#numericID#">
hidden field
</span>
</cfif>
</td>
ID不必是数字,但它们确实需要唯一且ID友好(单个单词,字母数字字符,_等)。因此,数字ID效果最佳。
编辑:正如斯科特所指出的,你可以用jQuery做到这一点。这种情况下的代码并不短得多jQuery经常会节省大量的代码,正如他所指出的那样,使交叉兼容性变得更加容易。
这是一个显示所有三种方法的小提琴,你可以使用这三种方法中的任何一种。 (JS,JQuery-button绑定,或JQuery表单提交绑定)
http://jsfiddle.net/540heL5v/1/
要使用JQuery,您需要下载并托管该库,或者让像谷歌这样的人这样做。 (Google愿意这样做。)用户带宽更好地引用一个中央,可靠的主机,如谷歌(因为他们可能已经下载了文件,而不是需要从您的网站下载另一个副本)。
调用它的代码是
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
我故意遗漏http/s:
。通过不澄清,它从所请求页面的协议中拉出。从https://hostsite.com
拨打电话会为呼叫建立安全连接,从http://hostsite.com
拨打电话会正常呼叫。