Hola gente de Stackoverflow, quiero implementar un filtro para algún tipo de tabla en javascript. mi búsqueda de texto funciona como se esperaba, pero tengo algunos problemas para obtener un elemento "seleccionar" con js ...

Algún código del mismo:

    function doSomething(){
    	var table, tr, td, i;
    	
    	table = document.getElementById("myTable");
    	tr = table.getElementsByTagName("tr");
    	for(i = 0; i < tr.length-1; i++){
    		td = tr[i].getElementsByTagName("td")[2];
    		
    		var e = td.getElementById("ABC");
    		
    		if(document.getElementById("cb1").checked &&  e.options[0].value == 0){
    			tr[i].style.display = "none";
    			
    		}else{
    			tr[i].style.display = "";
    		}
    	}
    }
<label>click me <INPUT type="checkbox" id="cb1" onclick="doSomething();"></label>
    
    <table id="myTable">
    
    <tr><td>Something</td><td>Some other Thing</td><td><select id="ABC"  name="sel1">
    <option value=0>Default</option>
    <option value=1>Not Default</option>
    </select></td></tr>
    
    </table>

https://jsfiddle.net/tnufmuLu/3/

1
treav0r 15 feb. 2018 a las 10:15

2 respuestas

La mejor respuesta

Podrías actualizar tu código así

function doSomething(){
    var table, tr, td, i;

    table = document.getElementById("myTable");
    tr = table.getElementsByTagName("tr");
    console.log(tr);
    for(i = 0; i < tr.length; i++){
        td = tr[i].getElementsByTagName("td")[2];
        var e = td.getElementsByTagName("select")[0];
        alert('selected value is:' + e.options[e.selectedIndex].value);
        if(document.getElementById("cb1").checked &&  e.options[0].value == 0){
            tr[i].style.display = "none";

        }else{
            tr[i].style.display = "";
        }
    }
}

Aquí está la demostración actualizada Si desea obtener el valor seleccionado de un menú desplegable, puede usar su atributo selectedIndex .

Por cierto, no debemos definir varios elementos HTML con el mismo ID (consulte aquí )

0
Trung Duong 15 feb. 2018 a las 08:57

Actualicé tu violín y creé una nueva DEMO

He corregido algunos errores en su código:

for(i = 0; i < tr.length; i++){

Y

var e = document.getElementById("ABC");

Y también, puse el código javascript en la parte superior del código HTML en una etiqueta <script> ya que estaba dando un error undefined function.

0
Rahul Gupta 15 feb. 2018 a las 07:45