Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析select元素时出现问题_Javascript - Fatal编程技术网

Javascript 解析select元素时出现问题

Javascript 解析select元素时出现问题,javascript,Javascript,我在网格中有一个下拉列表。这就是它的样子。现在我是 正在尝试获取选择标记的名称。 var x=document.getElementsByTagName('select'); 我需要知道你的名字和名字 以这样的方式对其进行分析,以获得该值13442111。获取这些信息的最佳方式是什么 <td class="cl"> <select name="ctrlvcol%3DId%3Bctrl%3DTabListView%3Brow%3D13442111%3Btype%3Dtxt

我在网格中有一个下拉列表。这就是它的样子。现在我是 正在尝试获取选择标记的名称。
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>

测试-AAAA
测试-BBBB
测试-CCCC
var selectElements=document.getElementsByTagName('select');
var selectElementsLen=selectElements.length;
对于(变量i=0;i=3){
//修剪元
rowID=rowID[2]。替换(/^row=/,“”);
//验证行ID
如果(/^[0-9]+$/.test(rowID)){
log('有效行ID:'+行ID);
//做任何需要做的事
}
}
}

以下是仅使用正则表达式的方法:

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
    }
}
var-selectElements=document.getElementsByTagName('select');
var selectElementsLen=selectElements.length;
对于(变量i=0;i=2)){
rowID=rowID[1];
log('有效行ID:'+行ID);
//做任何需要做的事
}
}


请记住,document.getElementsByTagName()可能不是最佳选择,因为它选择DOM树中所有指定的元素。您可能希望使用一个框架,如jQuery来考虑浏览器兼容性和性能。

这里有一段代码可以帮助您。当且仅当这是页面上唯一的

select
元素时,这个小片段将起作用。如上所述,最好使用
id
标识此元素。但是,对于您的用例,以下内容应该有效:

// Get all select elements (in this case the one) on the page.
var elems = document.getElementsByTagName("select");

// Select the first "select" element and retrieve the "name" attribute from it
var nameAttr = decodeURIComponent(elems[0].getAttribute("name"));

// Split the decoded name attribute on the ";" and pull the second index (3rd part)
var nameProp = nameAttr .split(';')[2];

// Substr the name prop from the equal sign to the the end
nameProp = nameProp.substr(nameProp .indexOf('=') + 1);

unescape(“CtrlCol%3DId%3Bctrl%3DTabListView%3Brow%3D13442111%3B类型%3Dtxt”).split(“row=“)[1]。split(;”)[0]这是文档中唯一的
选择
元素吗?如果没有,您如何将其与其他元素区分开来?如果名称未知,您可能需要更精确的方法来检索元素。我建议用一个id或类来标记它。你想在什么上下文中得到它的名称?还有其他下拉列表吗?您是否迭代地执行此操作,以便为所有下拉列表检索这些值?名称是如何生成的?当然可以用正则表达式解析名称,但要做到这一点,您需要知道常量,以便形成模式。@Venkat如果按API函数,您指的是标准JavaScript内置函数,那么是的。Mozilla开发者网络页面在上面吗?如果我使用JQuery,有什么好处?你可以用它优化选择器。getElementsByTagName()基本上会遍历DOM树并检查每个元素,而不管其在树中的级别如何。使用jQuery选择器“td.clselect”将跳过不是td元素子元素的所有元素。对于您的用例来说,这可能是过分的,但它可能在更大的DOM树上表现得更好。
// Get all select elements (in this case the one) on the page.
var elems = document.getElementsByTagName("select");

// Select the first "select" element and retrieve the "name" attribute from it
var nameAttr = decodeURIComponent(elems[0].getAttribute("name"));

// Split the decoded name attribute on the ";" and pull the second index (3rd part)
var nameProp = nameAttr .split(';')[2];

// Substr the name prop from the equal sign to the the end
nameProp = nameProp.substr(nameProp .indexOf('=') + 1);