views:

126

answers:

1

Ok, this has been killing me all night, I mean I've been working on this code for atleast 8 hours now. What is the problem with this, argggg.

I am trying to update all <span id="column_[row index number]_[column index number]_[layout position number]"> to increment it by one up until the next id="row_[row index number]" tr element, The tr elements that it should be searching in has an id of tr_[row index number]_[column index number]_[layout position number] but for some god knows what reason, it gives me issues. It's updating the same <span> tag 2x, and this changes it from the desired value to 1 more than it should be... There's only 1 <span> tag within the firstChild <td> element of each of the <tr> elements. I just don't understand why it is setting it 2x for just 1 of them, and it seems that it's random or something. argggg.

There's only 1 <span> element in the <td id="tdcolumn_[row index number]_[column index number]_[layout position number]> tag, but for some reason, it is calling the same tag twice. It should only call it once. arggg. I don't understand why??

Here's my code someone please help me here...

// 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;
    }
}

Please help me, Thank You :)

+2  A: 

Though I don't think I can solve your problem without the relevant HTML parts, I see at least one error in your code:

if (doneChilds = true)

This always evaluates to true. It should read:

if (doneChilds)

BTW, you don't need getAttribute here:

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

Just use:

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

Never set a class name using setAttribute, like here:

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

Use:

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

(the same is true for the line above that one, setting the id of an element).

Marcel Korpel
Hello Marcel Korpel, if you'd like I can send you the link and access to the Admin Part of the forum, since you would need these in order to see the actual example. Because it's in the Administration part of the forum. It would be too much work to take it out of there, but I suppose it's possible... Let me know if you can still help, k? I really do appreciate this!!! :)
SoLoGHoST