javascript函数没有得到下拉文本

时间:2011-05-27 10:06:38

标签: javascript html

我正在使用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);
 }
你能帮帮我吗...

3 个答案:

答案 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()的其他很好的替代答案。