Web-TorMedlem sedan nov. 200013 890 inläggOm en tag har class="disabled" så ska funktionerna som ligger i onclick inte köras.
Jag skulle ju kunna kolla detta i respektive funktion men då skulle jag bli tvungen att ändra i alla existerande funktioner och i alla framtida funktioner.
Din kod ser ut att funka. :)
Dessvärre följer den ju inte riktigt samma mönster som en "vanligt" anrop så om ja ginte hittar något bättre så måste jag ändra på ganska många sidor. :(
Det här kanske går att lösa på något helt annat sätt? Jag vill bara inte ändra på alla funktioner på hela sidan och helst inte behöva ändra på sättet som variablerna skickas till funktionerna. D.v.s:
bar(this, object, 'var') o.s.v...
PPeter SMedlem sedan dec. 20025 483 inlägg Du kan ju loopa igenom samtliga element och sätta onclick = null på de som är disabled. Då hindras de från att anropa funktioner i det attributet.
Web-TorMedlem sedan nov. 200013 890 inläggProblemet är bara knapparna kan disablas/enablas i olika funktioner runt om i systemet och då skulle även dom funktionernabehövas byggas. ;)
Men om vi backar några steg; gör det att komma åt innehållet i ett objekt som av typen [object Object]?
PPeter SMedlem sedan dec. 20025 483 inlägg "Innehållet" i ett [object Object] är ingenting annat än vad objektet Object har att erbjuda. [object Object] är vad nämnd objekts toString()-metod returnerar.
Du kan utöka "klassen":
Object.prototype.p = function(){return 3.14;}
function bar(obj){
alert(obj.p());
}
Det är inte hela sanningen. Alla användarskapade objekt skickar tillbaka [object Object] i toString som default, även om du har förlängt klassen, t ex:
<script type="text/javascript">
function TestClass(){
}
TestClass.prototype.something = function(){};
alert(new TestClass())
</script>
Denna kod alertar [object TestClass] som man kan tro (om man inte förlänger toString förstås) Dock har mozilla den goda smaken att returnera klassnamn på inbyggda klasser, t ex [object HTMLDivElement], medan IE inte ens gör det. Alltså har du i IE ingen aning om vilken sorts objektdet är frågan utifrån strängvärdet det returnerar.
Web-TorMedlem sedan nov. 200013 890 inläggMen kan man komma åt egenskaperna i [object Object]?
Web-Tor skrev:
Men kan man komma åt egenskaperna i [object Object]?
Svar ja, men du måste syfta på rätt objekt. Min punkt är att detta kan vara svårt att göra rätt pga IE's "dåliga" beskrivning av objekt.
Pröva detta då:
<script>
function execute(){
if(arguments[1].className.indexOf("disabled")==-1){
var i = arguments.length;
arguments[0](arguments[1])
}
}
function foo(){
alert("foo")
}
function bar(obj){
alert("bar: "+obj)
}
</script>
<div class="disabled" onclick="execute(function(){foo();bar(this)}, this);">Kör foo och bar disabled</div>
<div onclick="execute(function(){foo();bar(this)}, this);">Kör foo och bar</div>
RRGBMedlem sedan dec. 1999419 inlägg
Web-Tor skrev:
Om en tag har class="disabled" så ska funktionerna som ligger i onclick inte köras.
Någon anledning till att följande inte är ett hyfsat alternativ?
onclick="if(className=='disabled')return; foo();bar(this)"
Web-TorMedlem sedan nov. 200013 890 inlägg
RGB skrev:
Någon anledning till att följande inte är ett hyfsat alternativ?
Jag visste väl att det fanns ett helt annat sätt att se på det här! :)
Nackdelen är att det blir mer kod i HTML-filerna istället för i JS-filen men det känns som att jag kan leva med just nu.
Markerar ditt svar som lösningen men är det någon som har fler idéer så är dom välkomna. :)