Frage

Ok, das hat mich die ganze Nacht zu töten, ich meine, ich habe jetzt atleast 8 Stunden auf diesem Code gearbeitet. Was ist das Problem mit diesem, Argggg.

Ich versuche, all <span id="column_[row index number]_[column index number]_[layout position number]"> zu aktualisieren, es von einem bis zum nächsten id="row_[row index number]" tr element bis zu erhöhen, die tr Elemente, die es in seine suchen sollte haben eine ID von tr_[row index number]_[column index number]_[layout position number] aber aus irgendeinem Gott wissen, was Grund, es gibt mir Probleme. Es ist den gleichen <span> Tag 2x aktualisieren, und dies ändert sich von dem gewünschten Wert auf 1 mehr als es sein sollte ... Es gibt nur 1 <span> Tag im firstChild <td> element jeder des <tr> elements. Ich verstehe einfach nicht, warum es es für nur 1 von ihnen Einstellung 2x, und es scheint, dass es zufällig oder so etwas. Argggg.

Es gibt nur 1 <span> Element im <td id="tdcolumn_[row index number]_[column index number]_[layout position number]> Tag, aber aus irgendeinem Grunde ist es denselben Tag zweimal aufrufe. Es sollte es nur einmal anrufen. arggg. Ich verstehe nicht, warum ??

Hier ist mein Code jemand mir bitte helfen hier ...

// Reorder all columns, if any, in the other rows after this 1.
if (aRowId != 0 && lId.indexOf("tr_" + aRowId) == 0 && rowComplete != aRowId)
{
    var tempTr = lTable.childNodes[i].childNodes[p];


    while(tempTr.nodeType == 1 && tempTr.nextSibling != null)
    {
        var tempId = tempTr.getAttribute("id");

        if (!tempId) continue;

        if (tempId.indexOf("row_") == 0)
        {
            // All done this row, set it to completed!
            rowComplete = aRowId;
            break;
        }

        if (tempTr.hasChildNodes)
        {

            var doneChilds = false;

            // grab the id where tdcolumn_{aRowId}.indexOf = 0.
            for (fcTd = 0; fcTd<tempTr.childNodes.length; fcTd++)
            {
                if (tempTr.childNodes[fcTd].nodeName == '#text') continue;

                var tempfcId = tempTr.childNodes[fcTd].getAttribute("id");

                if (!tempfcId) continue;

                if (tempfcId.indexOf("tdcolumn_" + aRowId) != 0) continue;

                // looping through the children in the <td> element here.
                if (tempTr.childNodes[fcTd].hasChildNodes)
                {
                    for (x = tempTr.childNodes[fcTd].childNodes.length-1; x>0; x--)
                    {
                        if (tempTr.childNodes[fcTd].childNodes[x].nodeName == '#text') continue;

                        var tempSpanId = tempTr.childNodes[fcTd].childNodes[x].getAttribute("id");

                        if (!tempSpanId) continue;

                        if (tempSpanId.indexOf("column_") != 0) 
                            continue;

                        // alert(tempSpanId);

                        alert(tempTr.childNodes[fcTd].childNodes[x].nodeName);

                        var tSpanId = new Array();
                        tSpanId = tempSpanId.split("_");

                        if (currColumnId == 0)
                        {
                            currColumnId = parseInt(tSpanId[1]);
                            var incCol = currColumnId;  
                        }

                        incCol++;

                        // alert("currColumnId = " + currColumnId + "\n\ntSpanId[1] = " + tSpanId[1] + "\n\nincCol = " + incCol);

                        // Set the new Id's and Text, after which we can exit the for loop.
                        tempTr.childNodes[fcTd].childNodes[x].setAttribute("id", "column_" + incCol);
                        tempTr.childNodes[fcTd].childNodes[x].setAttribute("class", "dp_edit_column");
                        tempTr.childNodes[fcTd].childNodes[x].innerHTML = oColumnText + " " + incCol;
                        // tempTr.childNodes[fcTd].setAttribute("id", "tdcolumn_" + aRowId + "_" + (parseInt(tSpanId[1])+1) + "_" + tSpanId[3]);

                        doneChilds = true;

                        break;
                    }
                }
                else
                    continue;

                if (doneChilds == true)
                    continue;
            }
        }
        else
            continue;

        tempTr = tempTr.nextSibling;
    }
}

Bitte helfen Sie mir, danke:)

War es hilfreich?

Lösung

Obwohl ich nicht glaube, ich Ihr Problem ohne die relevanten HTML-Teile lösen kann, sehe ich zumindest einen Fehler im Code:

if (doneChilds = true)

Dies ergibt immer true. Es sollte lauten:

if (doneChilds)

BTW, die Sie nicht brauchen getAttribute hier:

var tempfcId = tempTr.childNodes[fcTd].getAttribute("id");

Just Verwendung:

var tempfcId = tempTr.childNodes[fcTd].id;

gesetzt niemals einen Klassennamen setAttribute verwenden, wie hier:

tempTr.childNodes[fcTd].childNodes[x].setAttribute("class", "dp_edit_column");

Verwendung:

tempTr.childNodes[fcTd].childNodes[x].className = "dp_edit_column";

(das gleiche gilt für die Linie über dieser eine, die id eines Elements Einstellung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top