たとえば、比較的単純です。領域
があり、その中のすべてのノードを削除する必要があります。多くの人は次のように書くと思います:
var divpanel = document.getElementById("newbody");
var controlinfo= divpanel.childNodes;
for(varindex = 0;index < controlinfo.length ;index )
{
RemoveChild(controlinfo[index ]);
}
一見すると、はい、これは正しいです。1 つずつたどって、最後にすべて削除します。しかし、よく考えてみると、ノードを削除するたびに controlinfo.length が小さくなっていき、このままではすべてのノードを削除できなくなるというバグがあります。では、どうすれば改善できるのでしょうか?最初から開始することは不可能であるため、次のように完全に正しい、最後から開始することはすでに非常に明らかです:
var divpanel = document.getElementById("newbody");
var controlinfo= divpanel.childNodes; controlinfo.length - 1;index > = 0 ;index--)
{
divpanel.removeChild(controlinfo[index]);
デバッグ、非常に良い!
この種の罠は JavaScript だけで発生するものではなく、基本的に C# や Java などのすべての言語で発生し、場合によってはそのような問題のために多くの時間を無駄にすることがあります。 。この問題についてはずっと前から知っていましたが、いつも自分の記憶を信頼しすぎて、きちんと記録することができませんでした。今は自分を戒めるために記録し、みんなと共有しています。