forEach probleme

  • Bekomme den Fehler:
    --------------------------------------------------------------------------------------------------------------
    SyntaxError: missing ; before statement
    c[#!#object HTMLInputElement]=1

    --------------------------------------------------------------------------------------------------------------
    Hier soll der fehler sein #!# (die Zeichen stehen net drinn)
    ist Zeile 3 "var c"+tag
    ist die value des Elementes. <input id="sID" type="hidden" value="1">


    JavaScript
    function getTagsValues(tag, key, array){
        var tag = document.getElementById(tag);
        eval("var c"+tag+"="+tag.value);
        alert(tag+" || "+ctag);
    }
    var tags = ["sID","sH","sT","sN","sD","sK","sA","sG","sE"];
    tags.forEach(getTagsValues);


    Inputs sehen so aus: (es ist für jeden tags eine vorhanden!)

    HTML
    <input id="sID" type="hidden" value="1">


    Liegt wohl iwi an Zeile 3:

    JavaScript
    eval("var c"+tag+"="+tag.value);
  • Mach mal lieber kein eval.
    eval is evil =)


    Du holst Dir von der public page Daten und schickst sie durch eval.
    Heißt:
    wenn in der tag.value das hier zB drin steht:

    Zitat


    1"; rufMeineFunctionAuf(); //


    dann erzeugt:

    Zitat

    eval("var c"+tag+"="+tag.value);


    das hier:

    Zitat

    var csID=11"; rufMeineFunctionAuf(); //


    Wie die value dort hin kommen könnte (XSS) ist erstmal Latte.



    Außerdem: die vars sind ja in der function "gefangen". Die sind also nicht global. Aber global hin oder her - nimm arrays für dynamische Schlüssel:

    JavaScript
    function getTagsValues(tag, key, array){
        var tag = document.getElementById(tag);
        var array = (!array)?[]:array;    
        array['c'+tag] = tag.value;
        alert(tag+" || "+ctag);
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!