特になし必要。これは、このようなgetElementsByTagName()
を使用して再帰せずに、プレーンJavaScriptで行うことができる:
function set_inputs(obj, prefix) {
var nodes = obj.getElementsByTagName("input");
for (var i = 0, len = nodes.length; i < len; i++) {
if (nodes[i].id) {
nodes[i].id = prefix + '_' + nodes[i].id;
}
if (nodes[i].name) {
nodes[i].name = prefix + '_' + nodes[i].name;
}
}
}
P.S.入力タグがIDまたは名前属性なしで存在する場合に備えてコードにないコードに保護を追加したので、コードに遭遇した場合にコードがエラーになることはありません。あなたはそれを二つの引数、あなたがしたいDOMツリーの一部のトップを表しDOMオブジェクトを渡すことで、この関数を呼び出し
function set_inputs(obj, prefix) {
var nodes = obj.getElementsByTagName("input");
for (var i = 0, len = nodes.length; i < len; i++) {
nodes[i].id = prefix + '_' + nodes[i].id;
nodes[i].name = prefix + '_' + nodes[i].name;
}
}
:あなたがその保護を希望しなかった場合、コードは次のように短くなりますIDに追加する接頭辞とinput
タグを検索します。このようなことをすれば、set_inputs(document.body, "test")
はドキュメント全体を検索します。このような場合:set_inputs(document.getElementById("top"), "test")
、DOMツリーの一部(id = top要素の下の部分)のみを検索します。任意のDOMオブジェクトに渡すことができ、その階層内のノードのみを検索します。
あなたは 'set_inputs'関数で' obj'とは何ですか? – gideon
objはDOMオブジェクトです。このコードはobjのchildNodesを取得し、関数を再度呼び出すことで再帰的にドリルインします。これにより、inputNodeが見つかるまでchildNodesを取得します。一度検出されると、IDを変更します。 – garyM
大丈夫でしたか? – gideon