2016-04-11 12 views
0

tüm onay kutularını kontrol seçmektir onun kod var:tüm kutuları içinde bir nesne dizisini almak ve işaretlemek için nasıl kontrol olanları

var checkedCbs = document.querySelectorAll('#priceTree input[type="checkbox"]:checked'); 
var ids = []; 
for (var i = 0; i < checkedCbs.length; i++) ids.push(checkedCbs[i].id); 

Ama benim nesne dizisi tüm onay kutularını içerdiği istiyorum ama kontrol edilir olanları Sadece işaretleyin, işaretli işaretleyin

chbs = [{ 'id': 'id1', 'checked': false },{ 'id': 'id2', 'checked': true}] 

Bunu vanila js'de nasıl yapabilirim?

cevap

3

elemanın checked(Boolean) özelliğini okuyun ve sadece checked öğeleri seçin arar gibi querySelectorAll yılında :checked olmamalıdır.

var checkedCbs = document.querySelectorAll('#priceTree input[type="checkbox"]'); 
 
var ids = []; 
 
for (var i = 0; i < checkedCbs.length; i++) { 
 
    ids.push({ 
 
    id: checkedCbs[i].id, 
 
    checked: checkedCbs[i].checked 
 
    }); 
 
}

+0

Harika, ama * haritası * ... burada kullanışlı olacağını düşünüyorum ;-) – RobG

+0

@RobG, İşaretçi var mı? [] .map.call'? – Rayon

+0

@RobG, _Deleted gönderiler yükseltilemez..Ne yazık ki; ( – Rayon

1

kullanımı [] .map.call

var checkedCbs = document.querySelectorAll('#priceinput[type="checkbox"]:checked'); 
[].map.call(checkedCbs, function(a){ 
    return { 
    id: a.id, 
    checked': a.checked 
    } 
}); 
+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map –

+1

': checked' seçecektir sadece kontrol edilen elemanlar ... – Rayon

0
//select all checkbox 
var sele = document.querySelectorAll('#priceTree input[type="checkbox"]'); 
var i = 0; 
var chbs = []; 
for (i=0; i<sele.length; i++) { 
    //push id checked status and id 
    chbs.push({'checked' : sele[i].checked, 'id':sele[i].id}); 
}