Eu quero colocar todos os atributos em um elemento HTML em uma matriz: como se eu tivesse um objeto jQuery, que é html se parece com isso:
<span name="test" message="test2"></span>
Agora, uma maneira é usar o analisador xml descrito aqui , mas então preciso saber como obter o código html do meu objeto.
a outra maneira é fazê-lo com jquery, mas como? o número de atributos e os nomes são genéricos.
obrigado
Btw: Não consigo acessar o elemento com document.getelementbyid ou algo semelhante.
getElementById
-var el = document.getElementById($(myObj).attr("id"));
get
método ... por exemplo:var obj = $('#example').get(0);
Você pode usar este plugin simples como $ ('# some_id'). GetAttributes ();
fonte
Simples:
fonte
Attr.nodeValue
foi preterido em favor devalue
, diz o Google Chrome. Então poderia serthis.name + ':' + this.value
. A interface AttrComo no IE7, elem.attributes lista todos os atributos possíveis, não apenas os atuais, temos que testar o valor do atributo. Este plugin funciona em todos os principais navegadores:
Uso:
fonte
Setter e Getter!
Usar:
fonte
jQuery.attr
.jQuery.attr
o levantador, mas provavelmente seria benéfico usá-lo também.Use
.slice
para converter aattributes
propriedade em MatrizA
attributes
propriedade dos nós DOM é aNamedNodeMap
, que é um objeto semelhante a uma matriz.Um objeto semelhante a uma matriz é um objeto que possui uma
length
propriedade e cujos nomes de propriedades são enumerados, mas, de outro modo, possui métodos próprios e não herda deArray.prototype
O
slice
método pode ser usado para converter objetos do tipo Array em um novo Array .fonte
attrs
, você pode acessar o nome do atributo com aname
propriedade no item.Essa abordagem funciona bem se você precisar obter todos os atributos com nome e valor nos objetos retornados em uma matriz.
Exemplo de saída:
Se você deseja apenas uma matriz de nomes de atributos para esse elemento, basta mapear os resultados:
fonte
A resposta de Roland Bouman é a melhor e mais simples maneira de baunilha. Notei algumas tentativas de plugues jQ, mas eles simplesmente não pareciam "cheios" o suficiente para mim, então fiz o meu. Até agora, o único contratempo foi a incapacidade de acessar atributos adicionados dinamicamente sem chamar diretamente
elm.attr('dynamicAttr')
. No entanto, isso retornará todos os atributos naturais de um objeto de elemento jQuery.O plug-in usa chamadas simples no estilo jQuery:
Você também pode adicionar um segundo parâmetro de string para obter apenas um atributo específico. Isso realmente não é necessário para a seleção de um elemento, pois o jQuery já fornece
$(elm).attr('name')
, no entanto, minha versão de um plugin permite vários retornos. Então, por exemplo, uma ligação comoIrá resultar em um
[]
retorno de matriz de objetos{}
. Cada objeto será parecido com:Plugar
Cumprida
jsFiddle
Mostrar snippet de código
fonte
Formas muito mais concisas de fazer isso:
Caminho antigo (IE9 +):
Maneira ES6 (Edge 12+):
document.querySelector()
retorna o primeiro elemento no documento que corresponde ao seletor especificado.Element.attributes
retorna um objeto NamedNodeMap que contém os atributos atribuídos do elemento HTML correspondente.[].map()
cria uma nova matriz com os resultados da chamada de uma função fornecida em todos os elementos da matriz de chamada.Demo:
Mostrar snippet de código
fonte
Isso ajuda?
Esta propriedade retorna todos os atributos de um elemento em uma matriz para você. Aqui está um exemplo.
Para obter os atributos de muitos elementos e organizá-los, sugiro criar uma matriz de todos os elementos pelos quais você deseja fazer um loop e criar uma sub-matriz para todos os atributos de cada elemento.
Este é um exemplo de script que percorrerá os elementos coletados e imprimirá dois atributos. Esse script pressupõe que sempre haverá dois atributos, mas você pode corrigi-lo facilmente com mapeamento adicional.
fonte
Todas as respostas aqui estão faltando a solução mais simples usando o método do elemento getAttributeNames !
Ele recupera os nomes de todos os atributos atuais do elemento como uma Matriz regular, que você pode reduzir a um bom objeto de chaves / valores.
fonte
Imagine que você tem um elemento HTML como abaixo:
Uma maneira de obter todos os atributos é convertê-los em uma matriz:
E abaixo está a string que você obterá (do exemplo), que inclui todos os atributos:
fonte
Tente algo como isto
e depois obter todos os atributos
para matriz de atributos use
fonte
tendo
<div id="mydiv" a='1' b='2'>...</div>
pode usarfonte
Muito simples. Você só precisa fazer um loop sobre o elemento de atributos e enviar seus nodeValues para uma matriz:
Se desejar o nome do atributo, você pode substituir 'nodeValue' por 'nodeName'.
fonte
Atributos para conversão de objeto
* Requer: lodash
Isso converterá todos os atributos html em um objeto aninhado
Exemplo de HTML:
<div custom-nested-path1="value1" custom-nested-path2="value2"></div>
Resultado:
{custom:{nested:{path1:"value1",path2:"value2"}}}
Se parseJson estiver definido como true, os valores json serão convertidos em objetos
fonte
Em javascript:
Para acessar os nomes e valores dos atributos:
fonte