Cuando intento lo siguiente:

<html>
    <body>
        <script type="text/javascript">
            window.onload = function() {
                var test1 = document.getElementsByName("div1");
                alert(test1[0]);
                var test2 = test1[0].getElementsByName("div2");
                alert(test2[0]);
            }
        </script>
        <div name="div1">
            <div name="div2">
            </div>
        </div>
    </body>
</html>

No funciona de la manera que lo pretendo. Hice un formulario y necesito poder obtener los datos del formulario de manera similar a lo que estaba probando con esto.

0
mowwwalker 7 jul. 2011 a las 07:13

3 respuestas

La mejor respuesta

Si recuerdo correctamente, solo el document (HTMLDocument) tiene el método getElementsByName. Los elementos DOM no tienen ese método y no puede aplicarlo utilizándolos como contexto.

1
Cristian Sanchez 7 jul. 2011 a las 03:20

getElementsByName solo debe invocarse desde un elemento document:

var test2 = document.getElementsByName('div2');

Además, solo debe usar el atributo name para elementos de formulario, no div s.

Si desea una API que le permita realizar búsquedas más fácilmente dentro de un elemento DOM, considere usar jQuery:

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script>
      $(function() {
          var div1 = $('#div1');
          var div2 = div1.find('#div2');
      });
    </script>
  </head>
  <body>
    <div id="div1">
      <div id="div2"></div>
    </div>
  </body>
</html>

Por supuesto, dado que id s debe ser único en todo el documento, generalmente no hay razón para buscar dentro de otro elemento una ID específica. Por lo tanto, realmente no necesita nada elegante como jQuery para algo así de simple.

3
Jacob 7 jul. 2011 a las 03:22

No hay name en los atributos de div. ¿Por qué no usar id en su lugar?

0
dpp 7 jul. 2011 a las 03:23