Ok, cela m'a tué toute la nuit, je veux dire que je travaille sur ce code depuis au moins 8 heures maintenant. Quel est le problème avec ça, argggg.nextSibling issues
Je suis en train de mettre à jour tous les <span id="column_[row index number]_[column index number]_[layout position number]">
à incrémentons jusqu'à la prochaine id="row_[row index number]"
tr element
, les éléments tr qu'il devrait être à la recherche en a un id de tr_[row index number]_[column index number]_[layout position number]
mais pour un dieu sait quelle raison, il me donne des problèmes. Il met à jour le même <span>
tag 2x, et cela le change de la valeur désirée à 1 de plus que ce qu'elle devrait être ... Il n'y a que 1 <span>
tag dans le firstChild <td> element
de chacun des <tr> elements
. Je ne comprends tout simplement pas pourquoi il est réglé 2x pour seulement 1 d'entre eux, et il semble que c'est aléatoire ou quelque chose. argggg.
Il n'y a qu'un seul élément <span>
dans la balise <td id="tdcolumn_[row index number]_[column index number]_[layout position number]>
, mais pour une raison quelconque, il appelle la même balise deux fois. Il devrait seulement l'appeler une fois. arggg. Je ne comprends pas pourquoi ??
Voici mon code quelqu'un s'il vous plaît aidez-moi ici ...
// 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;
}
}
S'il vous plaît aidez-moi, Merci :)
Vous voudrez peut-être marquer ceci avec l'étiquette de langue appropriée (Javascript?). –
Merci, oui, je viens de le faire ... – SoLoGHoST
@SoLoGHoST: Cela ressemble à une opportunité parfaite pour passer à un framework JavaScript. La manipulation DOM à ce niveau de complexité devient beaucoup plus facile et plus portable de cette façon. Aussi - avez-vous essayé de définir un point d'arrêt dans les outils de développement de votre navigateur et de parcourir le code ligne par ligne? Devrait être assez facile de trouver ce qui ne va pas avec un débogueur ... – Tomalak