Syntax är: element.hasAttribute(attName); så du måste skicka med attributet in oxå, ex.
var d = document.getElementById("div1");
if(d.hasAttribute("align")){
d.setAttribute("align", "center");
}
4 svar · 1 589 visningar · startad av standard sparty
Hallå
Nu bråkar jag med hasAttribute igen! Följande:
if(window.hasAttribute){
alert('hasAttribute stöds');
}
else{
alert('hasAttribute stöds inte');
}
if(window.setInterval){
alert('setInterval stöds');
}
else{
alert('setInterval stöds inte');
}
ger:
”hasAttribute stöds inte”
”setInterval stöds”
även i de browsers som stöder hasAttribute. Jag förstår verkligen inte varför. Båda är methods och borde kunna testas på detta sätt, inte sant?
Syntax är: element.hasAttribute(attName); så du måste skicka med attributet in oxå, ex.
var d = document.getElementById("div1");
if(d.hasAttribute("align")){
d.setAttribute("align", "center");
}
Är du säker på att objektet window stödjer den metoden? Alla objekt stödjer inte alla metoder. Om jag skapar en klass A med en metod X så förväntar jag mig inte att en instans av klass B också har metod X
Palle: Du missuppfattar frågan, medan onkelborg fattar vinken.
Det sparty vill göra är att kolla om metoden stöds. Och de två exemplen med hasAttribute och setInterval är vitt skilda.
window-objektet är ett speciellt objekt som symboliserar det globala scopet i fönstret. Om window.setInterval är definierat, betyder det att man kan anropa setInterval från valfri plats, så länge det inte också finns en variabel i det lokala scopet som också kalllas setInterval. Om det finns en lokal variabel med samma namn, kan man skriva window.setInterval för att uttryckligen komma åt den setInterval som finns i det globala scopet. Du kan även själv uttryckligen definiera globala variabler med window.myVar = 42;
hasAttribute å andra sidan är en metod som definierad på enskilda DOM-objekt. window är som beskrivet ovan inte ett DOM-objekt, utan en symbol för det globala scopet. Vill du testa om hasAttribute stöds, måste du plocka fram ett valfritt DOM-objekt. T ex if(document.firstChild.hasAttribute)
Helt riktigt nitro2k01
setInterval blandade jag bara in för att visa varför funkar det ena men inte det andra liksom. Jag antog att det var två likvärdiga ”grejor” i javascript. Jag kan bara konstatera hur jag totalt saknar grunderna i javascript med koncept som objects, variablar(!), methods och functions etc.
Men, lite klokare blev jag i alla fall.