Estoy tratando de mostrar filas dependiendo de la elección de los usuarios. Supongamos que solo quiere 3 filas, luego la cuarta y quinta fila se ocultarán. A continuación encontrará la parte de html y javascript.

Html

<table>
  <tr id="sRow1">
    <td>1a</td>
    <td>1b</td>
  </tr>
  <tr id="sRow2">
    <td>2a</td>
    <td>2b</td>
  </tr>
  <tr id="sRow3">
    <td>3a</td>
    <td>3b</td>
  </tr>
  <tr id="sRow4">
    <td>4a</td>
    <td>4b</td>
  </tr>
  <tr id="sRow5">
    <td>5a</td>
    <td>5b</td>
  </tr>
</table>

Javascript

// b gets value from xml file        
    while (b <= 5)
    {
        var rowName = "sRow" + b;
        alert(rowName);
        try {
            document.getElementById(rowName).style.display = "none";
        }
        catch (err)
        {
            alert(err.description)
        }
        b++;
    }

Recibo un error de objeto requerido en document.getElementById (rowName) .style.display = "none" ;. ¿Puedes por favor ayudarme?

1
kobra 17 sep. 2009 a las 03:04

3 respuestas

La mejor respuesta

Te estás perdiendo la parte interesante (de donde viene b), así que solo voy a adivinar: a veces b en realidad no es un número entre 1 y 5 inclusive . Tal vez es una cadena que no se formatea limpiamente a un número de un solo dígito 1-5, o tal vez es algo completamente diferente ... Hagamos que su código sea un poco más seguro, en caso de que tenga razón:

// b gets value from xml file

// ensure b is a number - will fail comparison if NaN
b = new Number(b);
while (b <= 5)
{
  var rowName = "sRow" + b;
  var row = document.getElementById(rowName);
  if ( row ) // verify element was found before trying to modify it!
    row.style.display = "none";
  b++;
}

Tenga en cuenta que he eliminado try {} catch: es mejor que solo pruebe el valor de retorno de getElementById(), ya que eso no interferirá con la depuración si desea utilizar un depurador más adelante ...

1
Test Employee 2 16 sep. 2009 a las 23:21

Creo que le falta el atributo runat con el id de la fila, ya que mencionó el id de la fila pero no mencionó el atributo runat, si no mencionó el atributo runat, entonces aparece ese error.

0
Asim Sajjad 17 sep. 2009 a las 00:48

En mi experiencia, obtendrá resultados inconsistentes en diferentes navegadores que intentan hacer invisibles las filas de la tabla modificando los atributos de estilo. Una cosa más segura es eliminar e insertar las filas de la tabla con insertRow () y deleteRow () métodos dom en el objeto de tabla. Esto se admite correctamente en todos los principales navegadores que probablemente encuentre.

1
Asaph 16 sep. 2009 a las 23:27