2015-10-16 2 views
1

У меня есть таблица с букетом флажков в каждой строке. Как я могу найти позицию отмеченного блока, например. 1A или 1B, если оба или один из флажков отмечен в первой строке. Страница, которую я пытаюсь изменить, динамически делает таблицу основанной на двух факторах для строк и столбцов. Я просто должен захватить имя rowname и colname, чтобы продолжить программирование. например 10 (A), если имя первой строки было «10».Как установить позицию отмеченного флажка в таблице

<table id="mytable"> 
    <tr> 
     <td> </td> 
     <td align="center"> A </td> 
     <td align="center"> B </td> 
    </tr> 
    <tr> 
     <td> 1 </td> 
     <td><input type="checkbox" /></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    <tr> 
     <td> 2</td> 
     <td><input type="checkbox" /></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    </table> 
    <tr> <button id="save">Click</button> </tr> 
+0

Почему вы не давать свои имена чекбоксов? –

+0

@ MarcoAurélioDeleu вот так? '' – Kaur

+0

Что вы пытаетесь выполнить? –

ответ

1

Это позволит получить столбец и строку проверяемой input, и он получает письмо столбца и номер строки с помощью вызовов document.querySelector, используя CSS3 first-child и nth-child селекторы на основе столбца и строки:

document.getElementById('mytable').addEventListener('click', function(e) { 
 
    if(e.target.tagName === 'INPUT') { 
 
    var td= e.target.parentNode, //the input's td parent 
 
     tr= td.parentNode,   //the td's tr parent 
 
     col= td.cellIndex,   //the input's column 
 
     row= tr.rowIndex,   //the input's row 
 
     header= document.querySelector('#mytable tr:first-child td:nth-child('+(col+1)+')').textContent, 
 
     number= document.querySelector('#mytable tr:nth-child('+(row+1)+') td:first-child').textContent; 
 
    
 
    document.getElementById('output').textContent= number+header; 
 
    } 
 
});
<table id="mytable"> 
 
    <tr> 
 
    <td></td> 
 
    <td align="center">A</td> 
 
    <td align="center">B</td> 
 
    </tr> 
 
    <tr> 
 
    <td>1</td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td>2</td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    <td> 
 
     <input type="checkbox" /> 
 
    </td> 
 
    </tr> 
 
</table> 
 

 
<div id="output"></div>

+0

Спасибо за помощь. Вот как я пытаюсь использовать его [JSfiddle] (http://jsfiddle.net/kaur/8qpsgez0/31/), но он не работает для меня. – Kaur

+1

Это потому, что вы смешиваете JavaScript и jQuery. Попробуйте следующее: http://jsfiddle.net/py3m1v6z/ –

+0

Отлично! Спасибо! – Kaur

1

попробовать это @ простой JavaScript:

var checkboxes = []; 
for(var i =0; i<document.getElementsByTagName("input").length;i++) { 
if(document.getElementsByTagName("input")[i].checked) {checkboxes.push(i)} 
} 

checkboxes - это набор проверочных флажков - например. [0,2], если первый и 3-й флажков проверяются

+0

это будет работать для меня. Спасибо! – Kaur

+0

Что делать, если имя строки было «10» для строк №1 и «2» для строки №2, мне нужно получить 10,2 в массиве флажков. – Kaur

0

или вроде этого:

https://jsfiddle.net/zLy90w40/1/

function getCheckBox(){ 
    var oneA = document.getElementById('1a'); 
    var oneB = document.getElementById('1b'); 
    var twoA = document.getElementById('2a'); 
    var twoB = document.getElementById('2b'); 
    if (oneA.checked){ 
     alert("1 A was checked") ; 
    } 
    if(oneB.checked){ 
     alert("1 B was checked") ; 
    } 
    if(twoA.checked){ 
     alert("2 A was checked") ; 
    } 
    if(twoB.checked){ 
     alert("2 B was checked") ; 
    } 
    }