Uncaught TypeError: Cannot call method 'substr' undefined (Chrome/IE)

So einfach Debuggen jemand anderes den code, ich würde alles behoben in Firefox und jetzt auf Chrome, aber wenn ich versucht bin, um eine option zu wählen, die wählt alle untergeordneten Knoten und öffnet Ihre relevanten Graphen, erhalte ich eine seltsame Fehlermeldung:

Uncaught TypeError: Cannot call method 'substr' undefined

Ich weiß, das problem ist (anscheinend) diese Zeile:

var graph={id:seqId,entityName:flags[6].substr(1).substr(0,flags[6].length-2),entity:flags[5].substr(1).substr(0,flags[5].length-2),idCounter:flags[4],counterName:flags[3].substr(1).substr(0,flags[3].length-2),ivmanager:flags[7].substr(1).substr(0,flags[7].length-2),chart:null,pointsToShowX:null,borneInf:null,unite:"",idInstance:flagsInstance[2].substr(1).substr(0,flagsInstance[2].length-2),instanceName:flagsInstance[3].substr(1).substr(0,flagsInstance[3].length-2),listPdsNull:new Array(), countInstance:idTreeview+"_"+i, countGraph:-1};

Aber ich habe keine Ahnung, warum das zu einem Fehler führt, da sieht alles korrekt zu mir?! substr verwendet wird unzählige Male vor und nach der Funktion, also habe ich keine Ahnung, warum Chrome wirft dieser Fehler bei mir.

Den volle Funktion ist als unten. Ich glaube das problem liegt im zweiten Teil.

function loadGraphs(idTreeview,idSelectGraph)
{

    var count=0;
    var fn=$('#'+idSelectGraph)[0].attributes[1].value;
    fn=fn.substr(12).substr(0,fn.length-2);
    var flags=fn.split(new RegExp(","));
    var data=''; 

    var idInstanceTreeview = idTreeview;

if($('#counterTreeviewUL'+idInstanceTreeview).length == 0)      
{

    var fnInstance=$('#'+idSelectGraph)[0].attributes[1].value;

    var flagsInstance=fnInstance.split(new RegExp(","));

    var graph = {
            id: seqId,
            entityName: flags[6].substr(1).substr(0, flags[6].length - 2),
            entity: flags[5].substr(1).substr(0, flags[5].length - 2),
            idCounter: flags[4],
            counterName: flags[3].substr(1).substr(0, flags[3].length - 2),
            ivmanager: flags[7].substr(1).substr(0, flags[7].length - 2),
            chart: null,
            pointsToShowX: null,
            borneInf: null,
            unite: "",
            idInstance: flagsInstance[2].substr(1).substr(0, flagsInstance[2].length - 2),
            instanceName: flagsInstance[3].substr(1).substr(0, flagsInstance[3].length - 2),
            listPdsNull: new Array(),
            countInstance: idTreeview + "_" + i,
            countGraph: -1
        };

    seqId++;
    graphs[graphsLastId]=graph;
    graphsLastId++;

    }

else 
  {
    for(var i=0;i<$('#counterTreeviewUL'+idInstanceTreeview)[0].children.length;i++)
        ($('#counterTreeviewUL'+idInstanceTreeview)[0].children[i].children[0].checked)?++count:count;

    if ($('#counterTreeviewUL'+idInstanceTreeview)[0].children.length == count)
    {
        $('#'+idSelectGraph)[0].checked=true;
        $('#'+idSelectGraph)[0].indeterminate=false;
    }
    else if (count==0)
    {
        $('#'+idSelectGraph)[0].checked=true;       
        $('#'+idSelectGraph)[0].indeterminate=false;        
    }
    else
    {
        $('#'+idSelectGraph)[0].checked=true;
        $('#'+idSelectGraph)[0].indeterminate=false;
    }   
        for (var i=0;i<$('#counterTreeviewUL'+idTreeview)[0].children.length;i++)
    {   
        if (!$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].checked)
        {   
            $('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].checked=true;


       var fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes[1].value;

       fnInstance=fnInstance.substr(15).substr(0,fnInstance.length-2);  
       var flagsInstance=fnInstance.split(new RegExp(","));


            var graph = {
                    id: seqId,
                    entityName: flags[6].substr(1).substr(0, flags[6].length - 2),
                    entity: flags[5].substr(1).substr(0, flags[5].length - 2),
                    idCounter: flags[4],
                    counterName: flags[3].substr(1).substr(0, flags[3].length - 2),
                    ivmanager: flags[7].substr(1).substr(0, flags[7].length - 2),
                    chart: null,
                    pointsToShowX: null,
                    borneInf: null,
                    unite: "",
                    idInstance: flagsInstance[2].substr(1).substr(0, flagsInstance[2].length - 2),
                    instanceName: flagsInstance[3].substr(1).substr(0, flagsInstance[3].length - 2),
                    listPdsNull: new Array(),
                    countInstance: idTreeview + "_" + i,
                    countGraph: -1
                };

            seqId++;            
            graphs[graphsLastId]=graph;             
            graphsLastId++;
        }
    }

 }
    graphsToLoad=false;
    updateAllGraphs();
    loading=false;

    if($('#counterTreeviewUL'+idInstanceTreeview).length == 0)
    {

      if($('#'+idSelectGraph)[0].checked)
        {
        countSelectedGraphs(graphsLastId, flags[5].substr(1).substr(0,flags[5].length-2), 0);
        }
      else 
        {
        countSelectedGraphs(graphsLastId, flags[5].substr(1).substr(0,flags[5].length-2), 0);
        }
    }

    else 
    {
    countSelectedGraphs(graphsLastId, flags[5].substr(1).substr(0,flags[5].length-2), 0);       
    }
}

Jede Einsicht in das, was verursacht diese scheinbar zufällige Fehler wäre sehr geschätzt, da kann ich Sie nicht finden viel online über diese Fehler (die Fälle, die ich gesehen habe, sind nichts, wie meiner einer), danke!

  • Was ist der Wert von fn nach dem ersten Auftrag?
  • Es war gleich fn = selectGraph95 wenn ich Konsole.angemeldet nach var fn=$ statement-und es war gleich fn = 5, wenn ich Konsole.angemeldet nach dem fn=fn.substr Anweisung.
InformationsquelleAutor | 2012-10-26
Schreibe einen Kommentar