onchange-Attribut nicht anrufen Funktion
Ich habe ein HTML-Dokument (hier), das schafft ein iframe-basierten media-player für eine Sammlung von songs innerhalb der Alben (die ich nur Buchstaben verwendet, um zu definieren, diese Alben und songs in der mymusic-array, für die Einfachheit).
Fokussierung auf die top-3 iframes, wie ich die Benutzer-Interaktion ist die Erzeugung der HTML-Code für Formulare der verfügbaren Alben und songs mit Javascript und schreiben Sie Sie auf die iframes in den Körper. Wenn Sie führen Sie es und nehmen Sie eine Auswahl in der Alben - Menü, werden Sie sehen, dass die Optionen in der Songs Menü korrespondieren mit den mymusic
array, damit das funktioniert.
Allerdings, wenn ich ein Lied wählen, wird die Funktion nowplaying(trackindex,albumindex)
genannt werden sollte, mit einem onchange
Ereignis in der Songs form, auf die gleiche Weise wie in der form generiert mit showinitial()
... aber die Funktion wird nicht aufgerufen.
Habe ich ausgeschlossen, die Codierung von nowplaying
selbst als Ursache, denn auch wenn ich nowplaying
zu alert("hello")
ist, wird es nicht genannt. Dies führt mich zu glauben, dass das problem mit der onchange
- Attribut in "alles", aber ich sehe nicht das problem. Die Art, wie ich codiert es ist kein Unterschied zu vorher, und das funktionierte gut, also warum nicht diese Arbeit?
Jede Hilfe wäre sehr geschätzt werden!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Firebug ist dein Freund....
onchange wird immer genannt, aber ich nicht definiert bei Aufruf der nowplaing.
Dies ist das Ergebnis dieser Zeile:
was ist mit "i" in der Zeichenfolge, wenn es gehen sollte fügen es als eine variable:
Klären, ich wird definiert, wenn nichts(ich) genannt, aber sind Sie nicht zu schreiben, die ich in den code, nur der Brief, den ich. Wenn nowplaying(dies.SelectedIndex-Eigenschaft,i) aufgerufen wird, ich nicht mehr definiert, weil Sie nicht im inneren des nichts () - Funktion mehr. Sie müssen erweitern ich, wenn Sie fügen Sie den html-zu p, so dass der Wert da ist und nicht die variable "i".
Ihre onchange-event-handler setzt sich aus einem string. Wenn ausführen, wird es nicht haben Zugang zu
i
, die eine lokale variable aus deranything
- Funktion, die ist längst Weg.Die einfache Lösung wäre:
stellt den aktuellen Wert des
i
bei string-Herstellung von Zeit in ein integer-literal innerhalb der Zeichenfolge.Allerdings ist es grundsätzlich keine gute Idee zu sein, das erstellen von code aus strings. Es ist normalerweise besser, schreiben die event-handler als eine normale Funktion Objekt:
Allerdings würden Sie generell vermeiden möchten, festlegen der Handler von einem Bild auf ein anderes. Ich bin mir nicht wirklich sicher, was die iframes sind gewinnen Sie hier andere als Kopfschmerzen. Warum nicht einfach verwenden positionierte divs mit overflow? Sie können immer noch umschreiben, deren Inhalt durch
innerHTML
wenn Sie müssen... obwohl ich würde es vorziehen, füllen Sie Sie mit DOM-Methoden, um die HTML-injection-Probleme Ihre aktuelle Skript hat.