standard spartyMedlem sedan sep. 201055 inlägg
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?
PalleMedlem sedan apr. 20002 716 inlägg
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");
}
onkelborgMedlem sedan juli 2003582 inlägg
Ä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
nitro2k01Medlem sedan aug. 20037 630 inlägg
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)
standard spartyMedlem sedan sep. 201055 inlägg
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.