「クリーンアップ」するために作成した関数に問題があります。以下のコードを参照して、その下でどのように機能するかを説明します。
clean: function (e) {
var
els = null,
i = 0;
if (e === undefined) {
e = this.cont;
}
els = e.getElementsByTagName('*');
for (i=0;i<els.length;i++) {
if (els[i].className.search('keep') === -1) {
e.removeChild(els[i]);
}
}
return this;
},
引数eはdom要素です。これが指定されていない場合、this.contも関数全体の前半に格納されているdom要素であり、eはデフォルトで使用されます。
この関数はすべての子要素をループし、クラスが保持されていないことを確認し(これが何をするかはかなり明白です)、一致しない要素を削除します。
すべてが機能しているように見えましたが、2つの画像と2つの入力があり、クラス'keep'はありませんが、変数iは2になり、ループは停止します(4に達し、4つの要素すべてを削除する必要があります)
どんな助けでも大歓迎です。
/* アップデート */
@pimvbと@BrettWalkerのおかげで、うまく機能する最終的なコードを以下に示します。
clean: function (e) {
var
els = null,
i = 0;
if (e === undefined) {
e = this.cont;
}
els = e.getElementsByTagName('*');
i = els.length;
while (i--) {
if (els[i].className.search('keep') === -1) {
els[i].parentNode.removeChild(els[i]);
}
}
return this;
},