w0051977
w0051977

Reputation: 15787

Loop through checkboxes that are not hidden

On a webpage I give the user the option of hiding table elements (which contain checkboxes) like this:

mytable.style.display = 'none'; //the table and the enclosed textbox is hidden

I am now trying to find all of the tables that are not hidden like this:

var frm = document.forms[0];
var arrayDisposals;
var intCount;
var arrayDisposals = new Array();
for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].type == "checkbox" && frm.elements[i].name.substr(0, 3) == "Del") {
        if ('none' != frm.elements[i].style.display) {
            {
                arrayDisposals.push(frm.elements[i].id + '|' + frm.elements[i].checked)
            }
        }
    }

The problem is that the second IF statement does not work i.e. all elements are added to the array. How do I only add checkboxes that are not hidden?

Upvotes: 0

Views: 262

Answers (1)

Anton
Anton

Reputation: 32581

If you were looking for a jQuery solution this should suffice. Use .map()

var arrayDisposals = $('input[type="checkbox"][name*="Del"]:visible').map(function(){
    return this.id+ "|" + this.checked
}).get();

Use attribute selector to find checkboxes and where the name contains "Del" and :visible to check if it is not hidden.

DEMO

Upvotes: 2

Related Questions