eventhandler onclick mit Funktionsaufruf bestücken

Biergamasda

Erfahrenes Mitglied
Hallo Leute, ich habe ein kleines, bzw großes Problem :)

Also, hatte es so:
Javascript:
div.setAttribute("onclick","makeRequest('./news/" + news[i] + "',SHOW_CONTENT)");

Das geht ja im IE bekanntlich nicht, deshalb wollte ich das ganze jetz auf folgendes umbauen:
Javascript:
div.onclick = function() { makeRequest("./news/" + news[i],SHOW_CONTENT); };

zum besseren verständnis nun die gesamte Funktion:

Javascript:
function printNews(httpRequest) {
    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            var news = new Array();
            news = httpRequest.responseText.split(';');
            for (i = 0; i < news.length - 1; i++) {
                div = document.createElement("div");
                div.className = "newsTeaser";
                div.appendChild(document.createTextNode(news[i].split(".")[0]));
                //div.onclick = function() { makeRequest("./news/" + news[i],SHOW_CONTENT); };
                //div.setAttribute("onclick","makeRequest('./news/" + news[i] + "',SHOW_CONTENT)");
                document.getElementById("news").appendChild(div);
            }
        } else {
            alert('There was a problem with the request.');
        }
    }    
}

Mein Problem ist jetzt, dass bei der 2. Variante, also der IE-tauglichen Variante die Variable i immer den wert 4 (also anzahl meiner news) erhält. Ziel ist jedoch, dass an die Request funktion der Inhalt des zutreffenden Elements aus news ist. - also beim ersten Schleifendurchlauf soll news[0] sein, beim 2. dann [1] ...

Ich hoffe ihr versteht was ich meine ;)

Mir fällt keine Variante mehr ein das zu lösen, also bitte ich um eure Hilfe....
Vielen Dank schon im Voraus

mfg me
 
Moin,

ich weiss zwar nicht, was SHOW_CONTENT ist, aber rein vom Prinzip her sollte es so gehen:
Code:
div.onclick = new Function('makeRequest("./news/' + news[i]+ '",SHOW_CONTENT)');
 
SHOW_CONTENT war nur eine Konstante - dachte das geht aus der Großschreibung schon hervor, sry ;)

Danke, funktioniert einwandfrei, auf die idee mit new Function() bin ich gar nicht gekommen... *g*

mfg
 

Neue Beiträge

Zurück