Erdnuckel: x.push(variable) funktioniert nicht

Hi,
ja tatsächlich, im IE 5.5 klappt es wunderbar, aber im IE 4 (auf mehreren rechnern) bekomme ich meine variablen nicht mit .push an mein array angehängt.

die variable wird aus einem anderem frame an dieses document gepostet...
             parent.frames[1].variable="xy";

das kommt auch an, "alert(variable);" spukt mir den korrekten Wert aus.
Dann geht es aus dem Absenderframe mit dem functionsaufruf....

parent.frames[1].arrplus();

weiter. Der functionsaufruf haut auch noch wunderbar hin.
Das sagt mir ein alert("hallo"); in der function arrplus().
Tja und wie ich einleitend schon sagte klappt der Rest also das "pushen" beim IE 5.5 hervorragend. Nur kleinere Versionen brechen das script mit der Fehlermeldung (objekt unterstützt diese eigenschaft oder methode nicht) ab. ????????

var x = new Array();

function arrplus(){
  x.push(variable);}

tja, dankeschön für deine aufmerksamkeit,
kannst du mir evtl. weiterhelfen?

  1. Moin!

    ja tatsächlich, im IE 5.5 klappt es wunderbar, aber im IE 4 (auf mehreren rechnern) bekomme ich meine variablen nicht mit .push an mein array angehängt.

    Stimmt. Array.push() gibt es erst ab JS1.2, welches der IE4 nicht kann. Man kann die Funktion aber nachruesten. In einer meiner Testdateien habe ich grad folgenden Code gefunden, welcher die Array-Methoden push, slice und splice bei Bedarf ergaenzt. Ich weiss aber nicht, ob ich damit seinerzeit ueberhaupt fertig geworden bin, Du muesstest es also mal durchtesten.

    /* for silly IE, that still doesn't support JS 1.2 */

    function __Array_push() {
            var i;
            for (i=0; i<arguments.length; i++)
                this[this.length] = arguments[i];
            return this.length;
        }

    if (!Array.push) Array.prototype.push = __Array_push;

    function __Array_slice(begin) {
            var end;
            var result = [];

    end = arguments.length >= 2 ? arguments[1] : this.length;
            for (var i=begin; i<end; i++) result.push(this[i]);

    return result;
        }

    if (!Array.slice) Array.prototype.slice = __Array_slice;

    function __Array_splice(index, how_many) {
            var cut;

    cut = this.slice(index, how_many);

    for (i=0; how_many > 0 && argument.length > i+2; i++, how_many--)
                this[index+i] = argument[i+2];
            index += i;

    return cut;
        }

    if (!Array.splice) Array.prototype.splice = __Array_splice;

    /* IE silliness section end */

    Die Beschreibung, was die Funktionen eigentlich zu tun haben, findest Du auf http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm.

    So long

    1. Moin...   gefällt auch mir besser
      dankeschön für deine Antwort,
      da wäre ich nie draufgekommen. *gg*

      der erdnuckel