我正在使用javascript从下拉列表中获取所选项目的文本。 但我没有收到案文。 我按名称遍历下拉列表..
我的html下拉列表如下:
<select name="SomeName" onchange="div1();">
<option value="someVal">A</option>
<option value="someOtherVal">B</option>
<option value="someThirdVal">C</option>
</select>
我的javascript如下:
function div1() {
var select = document.getElementsByName("SomeName");
var result = select.options[select.selectedIndex].text;
alert(result);
}
你能帮帮我吗...
答案 0 :(得分:3)
选项1 - 如果您只是要查找所选项目的值,请将其传递。
<select name="SomeName" onchange="div1(this.value);">
<option value="someVal">A</option>
<option value="someOtherVal">B</option>
<option value="someThirdVal">C</option>
</select>
function div1(val)
{
alert(val);
}
选项2 - 您也可以按照建议使用ID。
<select id="someID" name="SomeName" onchange="div1();">
<option value="someVal">A</option>
<option value="someOtherVal">B</option>
<option value="someThirdVal">C</option>
</select>
function div1()
{
var ddl = document.getElementById("someID");
var selectedText = ddl.options[ddl.selectedIndex].value;
alert(selectedText);
}
选项3 - 您也可以传递对象...
<select name="SomeName" onchange="div1(this);">
<option value="someVal">A</option>
<option value="someOtherVal">B</option>
<option value="someThirdVal">C</option>
</select>
function div1(obj)
{
alert(obj.options[obj.selectedIndex].value);
}
答案 1 :(得分:1)
getElementsByName返回一个项目数组,因此您需要:
var select = document.getElementsByName("SomeName");
var text = select[0].options[select[0].selectedIndex].text;
alert(text);
或类似的东西。
编辑:代替“[0]”代码,您可能希望(a)循环“select”中的所有项目,如果您期望许多具有该名称的选项,或者(b)选择一个id并使用document.getElementById(),它只返回1个项目。
答案 2 :(得分:0)
发布的原始片段的问题是document.getElementsByName()返回一个数组而不是单个元素。
要修复原始代码段,而不是:
document.getElementsByName("SomeName"); // returns an array
尝试:
document.getElementsByName("SomeName")[0]; // returns first element in array
编辑:虽然这会让你启动并运行,但请注意这里避免使用getElementsByName()的其他很好的替代答案。