0

グリッドにドロップダウンがあります。こんな感じです。現在、選択タグの名前を取得しようとしています。
var x = document.getElementsByTagName('select'); この値13442111を取得するには、名前を取得して解析する必要があります。この情報を取得するための最良の方法は何ですか?

<td class="cl">
    <select name="ctrlvcol%3DId%3Bctrl%3DTabListView%3Brow%3D13442111%3Btype%3Dtxt" onchange="getTypeValue(this.value,13442111)">
       <option value="1025">TEST-AAAA</option>
       <option selected="" value="1026">TEST-BBBB</option>
       <option value="1027">TEST-CCCC</option>
    </select>
</td>
4

2 に答える 2

1
var selectElements = document.getElementsByTagName('select');
var selectElementsLen = selectElements.length;

for (var i = 0; i < selectElementsLen; i++) {

    // split row parts
    var rowID = unescape(selectElements[i].name).split(';');
    if (rowID.length >= 3) {

        // trim meta
        rowID = rowID[2].replace(/^row=/, '');

        // validate row ID
        if (/^[0-9]+$/.test(rowID)) {
            console.log('Valid Row ID: ' + rowID);
            // do whatever needs to be done
        }
    }
}

http://jsfiddle.net/N4sJv/

正規表現のみを使用したアプローチは次のとおりです。

var selectElements = document.getElementsByTagName('select');
var selectElementsLen = selectElements.length;

for (var i = 0; i < selectElementsLen; i++) {

    // extract Row ID
    var rowID = unescape(selectElements[i].name).match(/(?:row=)([0-9]+)/);
    if (rowID && (rowID.length >= 2)) {
        rowID = rowID[1];
        console.log('Valid Row ID: ' + rowID);
        // do whatever needs to be done
    }
}

http://jsfiddle.net/N4sJv/1/

document.getElementsByTagName() は、DOM ツリーで指定されたすべての要素を選択するため、最適な選択ではない可能性があることに注意してください。jQuery などのフレームワークを使用して、ブラウザーの互換性とパフォーマンスを検討することをお勧めします。

于 2013-08-05T20:14:59.273 に答える