javascript函数未获取下拉文本
我正在使用javascript从下拉列表中获取所选项目的文本。 但是我没有得到文本。 我正在按姓名浏览下拉列表 我的html下拉列表如下所示:javascript函数未获取下拉文本,javascript,html,Javascript,Html,我正在使用javascript从下拉列表中获取所选项目的文本。 但是我没有得到文本。 我正在按姓名浏览下拉列表 我的html下拉列表如下所示: <select name="SomeName" onchange="div1();"> <option value="someVal">A</option> <option value="someOtherVal">B</option> <option value=
<select name="SomeName" onchange="div1();">
<option value="someVal">A</option>
<option value="someOtherVal">B</option>
<option value="someThirdVal">C</option>
</select>
您能帮我解决一下吗?发布的原始代码片段的问题在于该文档。getElementsByName()返回一个数组,而不是单个元素 要修复原始代码段,请执行以下操作:
document.getElementsByName("SomeName"); // returns an array
尝试:
编辑:虽然这将使您启动并运行,但请注意此处其他避免使用getElementsByName()的替代答案。发布的原始代码段的问题在于该文档。getElementsByName()返回数组而不是单个元素 要修复原始代码段,请执行以下操作:
document.getElementsByName("SomeName"); // returns an array
尝试:
编辑:虽然这将帮助您启动并运行,但请注意此处其他避免使用getElementsByName()的替代答案。getElementsByName返回一个项目数组,因此您需要:
var select = document.getElementsByName("SomeName");
var text = select[0].options[select[0].selectedIndex].text;
alert(text);
或者类似的东西
编辑:与“[0]”位代码不同,您可能希望(a)在“选择”中循环所有项目(如果您希望有许多选择使用该名称),或者(b)为“选择”指定一个id并使用document.getElementById(),该id只返回一个项目。getElementsByName返回一个项目数组,因此您需要:
var select = document.getElementsByName("SomeName");
var text = select[0].options[select[0].selectedIndex].text;
alert(text);
或者类似的东西
编辑:与“[0]”位代码不同,您可能希望(a)在“选择”中循环所有项目(如果您希望有许多选择使用该名称),或者(b)为“选择”指定一个id并使用document.getElementById(),该id只返回一个项目。选项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);
}
A.
B
C
功能分区1(val)
{
警报(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);
}
A.
B
C
函数div1()
{
var ddl=document.getElementById(“someID”);
var selectedText=ddl.options[ddl.selectedIndex].value;
警报(选择文本);
}
选项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);
}
A.
B
C
职能部门1(obj)
{
警报(对象选项[obj.selectedIndex].value);
}
选项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);
}
A.
B
C
功能分区1(val)
{
警报(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);
}
A.
B
C
函数div1()
{
var ddl=document.getElementById(“someID”);
var selectedText=ddl.options[ddl.selectedIndex].value;
警报(选择文本);
}
选项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);
}
A.
B
C
职能部门1(obj)
{
警报(对象选项[obj.selectedIndex].value);
}
为什么不给dropdown一个id并使用document.getElementById?为什么不给dropdown一个id并使用document.getElementById?你不能假设数组中的第一个元素是你想要的选择。此外,getElementByName将比一个合适的getElementById更昂贵。我认为这不是一个好的解决方案。海报代码不起作用的至少一个原因是因为输出是一个数组。getElementById()更好是的,但是有一个更好的解决方案可以避免getElementBy*和getElementBy*。我认为问题的关键在于,你的回答并不是他的问题的答案,尽管它有一个真实的含义。我同意有一个很好的选项不使用getElementBy*,这就是为什么我在回复中包括了两个例子。你不能假设数组中的第一个元素就是你想要的select。此外,getElementByName将比一个合适的getElementById更昂贵。我认为这不是一个好的解决方案。海报代码不起作用的至少一个原因是因为输出是一个数组。getElementById()更好是的,但是有一个更好的解决方案可以避免getElementBy*和getElementBy*。我认为问题的关键在于,你的回答并不是他的问题的答案,尽管它有一个真实的含义。我同意有一个很好的选项不使用getElementBy*,这就是为什么我在回复中包含了两个例子。