Para un elemento de selección, ¿hay alguna diferencia entre el length de la propiedad y el options.length propiedad?

En particular, me interesaría saber si hay una diferencia en términos de compatibilidad del navegador.

  • Puede usted aclarar la «diferencia»? Diferentes en la salida, la velocidad de ejecución..?
  • cualquier diferencia. No he encontrado hasta ahora, y me pregunto ¿por qué necesitaríamos dos propiedades que actúan de la misma.
  • Usted debe utilizar .options.length, lo que hace que la intención clara y es más limpio. El .length de la propiedad en el <select> en sí no sólo existe porque no puede actuar como opciones de contenedor (peculiaridades introducido por el IE y estandarizado con HTML5).
  • no de acuerdo a developer.mozilla.org/en-US/docs/Web/API/…, que indica que seleccione.longitud formalmente representa «El número de <option> elementos que en este elemento de selección». Cualquiera es buena, y muestra clara de la intención. Seleccione.la longitud es «el número de elementos de opción en este elemento de selección», seleccione.opciones.la longitud es «el número de elementos en la lista de opciones childNodes en el elemento select». Diferencia semántica, pero funcionalmente equivalentes.
  • eres lo que implica que options.length tiene mejor soporte de los navegadores de length?
  • No sé (y no de atención). Todos los actuales, decente navegador es compatible con ambos; puede ser que a principios de la IE/NN no apoyo .options.length y que a principios de la de otros navegadores no fueron IE-compatible.

InformationsquelleAutor Christophe | 2013-10-10

3 Comentarios

  1. 6

    Basado en https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement no hay ninguna diferencia funcional, sólo una «semántica si usted quiere conseguir realmente técnico acerca de» diferencia:

    • select.length es declarado oficialmente como el número de elementos de opción contiene un elemento de selección. Es la voluntad de especificación de definición siempre tienen el mismo valor como select.options.length, que es:

    • select.options.length es «el número de elementos en la lista de opciones childNodes en el elemento select». Diferencia técnica, semánticamente ligeramente diferente, pero debido a cómo select.length ha sido formalizado, para todos los intentos y propósitos siempre el mismo valor.

    Así que la primera técnicamente «vive» en el <select> elemento, el segundo vive en la options propiedad de la <select> elemento (que es un HTMLOptionsCollection, no una matriz!), pero el valor es siempre el mismo y que en realidad no importa lo que usted usa. Los navegadores que implementan la especificación (ver [1] y [2]) siempre dar el valor correcto para cualquiera.

    [1] http://www.w3.org/TR/2002/PR-DOM-Level-2-HTML-20021108/html.html#ID-5933486

    [2] http://www.w3.org/TR/2002/PR-DOM-Level-2-HTML-20021108/html.html#HTMLOptionsCollectionwill

    • Le importaría a link que la especificación?
    • hecho, añadido a la especificación del w3c enlaces.
  2. 3

    Tanto

    seleccione.longitud

    y

    seleccione.opciones.longitud

    son compatibles con todos los principales navegadores.

    La única diferencia entre ellos (que yo sepa) es

    • select.length es seleccionar la propiedad que devuelve el número de opciones – que es la definición. En otras palabras length en select es una propiedad especial en este particular elemento de DOM
    • select.options.length simplemente devuelve el número de elementos en options colección (la misma lógica document.getElementsByTagName('div').length)
  3. 0

    No es lo mismo, definitivamente, tenía que encontrar la hardway tratando de

    Hay 3 opciones definidas en el código HTML/PHP

    Llamar a una función JQUERY y los resultados son

    Antes de seleccionar nada en el combobox

    console.log(select.length);   //1
    console.log(select.options.length); //undefined 

    Después de seleccionar algo

    console.log(select.length);   //3
    console.log(select.options.length); //3

Dejar respuesta

Please enter your comment!
Please enter your name here