Obtener valor de elemento de array jquery

publicado por: user138682

Estoy intentando obtener los valores de los elementos de un array en jQuery.

Creo el array a partir de varios <span></span> que tengo en HTML de esta forma:

var elems = document.getElementsByTagName( "span" );
var arr = jQuery.makeArray( elems );

Pero luego, cuando voy a intentar obtener el valor de, por ejemplo, arr[0] con:

arr[0].val();

Me da error.

Un Saludo.

solución

La forma de acceder al texto contenido en un tag usando javascrtipt puro y jquery es distinto, en el primer caso es .innertext, es una propiedad del objeto, en jquery la forma de acceder es text(), una función.

Además, los retornos de los selectores tanto de javascrtipt puro como de jquery no son un array, son objetos, al menos el retorno de estos selectores. Pero lo puedes convertir en array usando lo que se llama Asignación por destructuring, jquery tiene a su vez, un metodo propio para acceder a elementos usando indices: eq(indice)

_x000D_

_x000D_

const spans = [...document.getElementsByTagName("span")];_x000D_
_x000D_
//un elemento con vanilla js_x000D_
console.log(spans[0].innerText);_x000D_
_x000D_
//todos los elementos con vanilla js_x000D_
spans.forEach(e => console.log(e.innerText));_x000D_
_x000D_
_x000D_
//un elemento con jquery_x000D_
$("span").eq(0).text();_x000D_
_x000D_
//todos los elementos con jquery_x000D_
$("span").each(function() {_x000D_
  console.log($(this).text())_x000D_
});

_x000D_

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>_x000D_
_x000D_
<span>uno</span>_x000D_
_x000D_
<span>dos</span>_x000D_
_x000D_
<span>tres</span>_x000D_
_x000D_
<span>cuatro</span>_x000D_
_x000D_
<span>cinco</span> ​

_x000D_

_x000D_

_x000D_

El destructuring para selectores jquery sería [...$("span")], igual que vanillajs, para seleccionar un elemento sin el destructuring también se puede hacer $("span")["0"], en donde el indice es un string.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *