jQuery - Wie kann ich push einen Wert in eine Globale array in IE und Firefox?
Edit: zumindest ein Teil des Problems war, weil history
bereits vorhanden ist (und ich wusste nicht, dass). Vielen Dank, jeder.
Original:
Habe ich eine Funktion, das drückt den Wert eines <input>
in eine zunächst leere globales array mit dem Namen history
dann löscht die Eingabe.
Den code, um die push-Wert funktioniert gut in Chrome 21 und Opera 12, aber nicht im IE9 und Firefox 15.
Habe ich erforscht dies ein wenig und fand, dass, wenn das array war die lokale (erstellt im pr() anstelle von $(document).bereit als var history = []
), funktionierte es gut. Ich habe auch versucht, deklarieren Sie Sie außerhalb der alles auf den Anfang der Datei.
IE-Fehler: SCRIPT438: Object doesn't support property or method 'push'
FF-Fehler: TypeError: history.push is not a function
Wie kann ich push den Wert auf eine leere Globale array in IE und Firefox?
Hier ist mein code:
<input type="text" id="command" />
Dann in meiner JS-Datei:
$(document).ready(function() {
history = []; //no var because that makes it global, right?
)};
$(document).keypress(function(e) {
if(e.which == 13) { //if enter
e.preventDefault();
if($("#command").val() !== "") {
pr();
}
}
});
function pr() {
var text = $("#command").val();
text = text.replace(/<(?:.|\n)*?>/gm, ""); //these two are supposed to
text = text.replace(/[<>]/gi, ""); //sanitize the input
history.push(text); //this where it gets hairy
alert(history); //doesn't display anything in IE/FF because .push failed
//do a bunch of other stuff that isn't relevant
}
Vielen Dank im Voraus.
history
.Nicht sicher, ob Tippfehler, sondern $(document).ready(function() { ist nicht richtig geschlossen. Auch können Sie erklären etwas als global leicht von überall gehen Fenster.<Variablenname> = ...
Auch die Geschichte ist ein sehr schlechter name für Sie, wie die Geschichte ist bereits ein Objekt, das sehr wahrscheinlich das problem zu sein, benennen Sie es um so etwas wie scriptHistory
Ja, sorry, ist ein Tippfehler. Ich sehe, ich werde versuchen, etwas anderes ist als die Geschichte. Danke.
Es funktioniert jetzt, danke!
InformationsquelleAutor Abluescarab | 2012-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie deklarieren var außerhalb von $(document).ready () - und bitte beachten Sie auch, dass die Geschichte schon eine Globale variable im Browser.
Neben der für den Aufruf nicht Geschichte, was das Objekt für browser-Geschichte, konnte man auch mit Fenster.variableName, um ihn zu zwingen, um den globalen scope.
D ' OH! Ich habe ganz vergessen über das. Yep, Geschichte ist ein Objekt, das in den meisten Browsern. Werde ich revidiere meine Antwort.
nmenego: Danke! Und völlig verständlich, wusste ich gar nicht "Geschichte" gab. @ReneGeuze Danke für den Tipp!
InformationsquelleAutor nmenego