2 Stimmen

Die onload() Funktion weigert sich zu laufen?

Hallo, es tut mir leid, dass ich dich mit einer so einfachen Frage belästige, aber bei diesem Code konnte ich wirklich keinen Fehler finden. Keiner der Alerts wird ausgelöst, also weiß ich, dass init nicht einmal an window.onload übergeben wird. Hier ist der Code:

window.onload()=init;
alert("Die Datei wurde verknüpft.");
function init(){
    alert("Init wurde geladen");
    var button = document.getElementById("myButton");
    button.onclick = handleButtonClick; 
}

function handleButtonClick()
{
    alert("Button wurde geklickt");
    var target = document.getElementById("target");
    var image = document.createElement("");
    image.innerHTML = "" ;
    target.appendChild(image);
}

Der JS-Code befindet sich in einer externen JS-Datei, die ich verlinkt habe mit:

Habe ich etwas falsch geschrieben oder einen Parameter vergessen, denn wie gesagt, keiner der Alarme wird ausgelöst, es hat keinen Sinn, über das Erstellen eines neuen und das Hinzufügen zu sprechen.

Das HTML ist kein Problem. Ich habe einen einfachen alert() mit inline </code> ausprobiert und es funktioniert, aber ich muss, dass dies in einer externen Datei ist.</p></x-turndown>

4voto

JaredMcAteer Punkte 19595

window.onload ist keine Methode, lass die Klammern () fallen

3voto

Dave Taylor Punkte 1851

window.onload ist keine Funktion und daher wird die erste Zeile verhindern, dass der Rest ausgeführt wird:

window.onload()=init

Es sollte sein

window.onload=init;
alert("Die Datei wurde verknüpft.");
function init(){
    alert("Init wurde geladen");
var button = document.getElementById("myButton");
    button.onclick = handleButtonClick; 
 }

function handleButtonClick()
{
    alert("Button wurde geklickt");
    var target = document.getElementById("target");
    var image = document.createElement("");
    image.innerHTML = "" ;
target.appendChild(image);
 }

Beachten Sie auch, dass die init-Funktion nur verfügbar ist, weil JavaScript nicht "var"ed Funktionen an den Anfang des Bereichs hebt, also seien Sie vorsichtig, wenn Sie auf Funktionen in dieser Weise verweisen.

1voto

Rob W Punkte 327048

Wie andere bereits gesagt haben, müssen die Klammern weggelassen werden. Bevor Ihr Code funktioniert, müssen Sie jedoch mehr Code korrigieren.

  1. document.createElement akzeptiert einen einfachen String als Parameter, der der Tag-Name sein wird. Ihr aktueller Code wird an dieser Stelle einen Fehler auslösen.
  2. Wenn ein Bild-Element erstellt wurde, macht die Eigenschaft innerHTML keinen Sinn dafür. Sie müssen explizit Attribute/Eigenschaften daran anhängen (siehe unten).

Korrigierter Code:

function handleButtonClick()
{
    alert("Button wurde geklickt");
    var target = document.getElementById("target");
    //var image = document.createElement(""); // UNGÜLTIG!!
    var image = new Image(); // oder: document.createElement("img");
    //image.innerHTML = "" ;
    image.src = "../Images/banner_test.jpg";
    image.alt = "Banner";
    image.height = 42;
    image.width = 42;
    target.appendChild(image);
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X