javascript - with - title html span




Quando usar setAttribute vs.attribute=em JavaScript? (5)

De Javascript: The Definitive Guide , esclarece as coisas. Ele observa que os objetos HTMLElement de um documento HTML definem propriedades JS que correspondem a todos os atributos HTML padrão.

Portanto, você só precisa usar setAttribute para atributos não padrão.

Exemplo:

node.className = 'test'; // works
node.frameborder = '0'; // doesn't work - non standard attribute
node.setAttribute('frameborder', '0'); // works

Tem uma prática recomendada em torno de usar setAttribute vez da notação de atributo ponto ( . ) Foi desenvolvida?

Por exemplo:

myObj.setAttribute("className", "nameOfClass");
myObj.setAttribute("id", "someID");

ou

myObj.className = "nameOfClass";
myObj.id = "someID";

Isso parece um caso em que é melhor usar setAttribute:

Dev.Opera - JavaScript eficiente

var posElem = document.getElementById('animation');
var newStyle = 'background: ' + newBack + ';' +
'color: ' + newColor + ';' +
    'border: ' + newBorder + ';';
if(typeof(posElem.style.cssText) != 'undefined') {
    posElem.style.cssText = newStyle;
} else {
    posElem.setAttribute('style', newStyle);
}

Um caso que encontrei onde setAttribute é necessário é ao alterar os atributos ARIA, já que não há propriedades correspondentes. Por exemplo

x.setAttribute('aria-label', 'Test');
x.getAttribute('aria-label');

Não há x.arialabel ou qualquer coisa assim, então você tem que usar setAttribute.

Edit: x ["aria-label"] não funciona . Você realmente precisa setAttribute.

x.getAttribute('aria-label')
null
x["aria-label"] = "Test"
"Test"
x.getAttribute('aria-label')
null
x.setAttribute('aria-label', 'Test2')
undefined
x["aria-label"]
"Test"
x.getAttribute('aria-label')
"Test2"

Você deve sempre usar o formulário direto .attribute (mas veja o link quirksmode abaixo) se você quiser acesso programático em JavaScript. Ele deve lidar com os diferentes tipos de atributos (pense em "onload") corretamente.

Use getAttribute / setAttribute quando quiser lidar com o DOM como é (por exemplo, apenas texto literal). Navegadores diferentes confundem os dois. Veja modos de Quirks: compatibilidade de atributo (in) .


"Quando usar setAttribute vs .attribute = em JavaScript?"

Uma regra geral é usar .attribute e verificar se ele funciona no navegador.

..Se funciona no navegador, você está pronto para ir.

..Se isso não acontecer, use .setAttribute(attribute, value) vez de .attribute para esse atributo.

Enxaguar-repetir para todos os atributos.

Bem, se você é preguiçoso, você pode simplesmente usar .setAttribute . Isso deve funcionar bem na maioria dos navegadores. (Embora os navegadores que suportam .attribute possam otimizá-lo melhor que .setAttribute(attribute, value) .)





setattribute