循环访问表并找到span class +复选框选中确认框弹出窗口。

时间:2014-11-10 22:42:18

标签: javascript coldfusion

我正在尝试遍历我的表并找到带有类和复选框的跨度,以查看它是否已被选中。具体取决于其是否已检查并且该跨度类是否存在,将弹出确认框。我不断获取对象或对象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;
            }
        }
    }

1 个答案:

答案 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拨打电话会正常呼叫。