Javascript setTimeout

Kommentieren Feb 18 2008

 

habe gerade ein komisches Verhalten bei der setTimeout Funktion bemerkt.

Diese Funktion setzt den display Wert eines Elementes:

function showInfoText(id_of_element) {
   showObj = document.getElementById(id_of_element);

   if(showObj) {
       if(showObj.style.display == "none") {
           showObj.style.display = "";
       }
       else {
           showObj.style.display = "none";
       }
   }
}

Wenn ich nun diese Funktione mit setTimeout aufrufe bekomme ich nicht mehr die id_of_element als alphanumerischen Wert sondern es ist gleich ein Objekt ??

function test(id_of_element_to_toggle) {
    setTimeout("showInfoText("+id_of_element_to_toggle+")",1000)
}

Nun kommt ein Fehler, da man ja in der showInfoText ein alphanumerischen Wert erwartet mit dem man das Element anspricht.

Des Problems Lösung ?

function test(id_of_element_to_toggle) {
    setTimeout("showInfoText('"+id_of_element_to_toggle+"')",1000)
}

Man beachte die zusätzlichen einfachen Anführungszeichen innerhalb der Klammer. Damit Funktioniert das Ganze so wie man es erwartet.

banana out.