我有一个由票务系统生成的表单,但我必须自定义它
在这种形式中,select
部分有不同的选项,每个选项都有一个带有数字和文本的值(在标签之间)。我无法更改该值,因为票证系统在您将表单发送给它时需要它。现在我有一个函数收集一些输入并将其放入文本字段(也在表单中)但是,我需要选项标签中的文本而不是值:
<select id="selectfield" bla bla bla>
<option value="1"> something </option>
<option value="2"> something different </option>
<option value="3"> complete other text </option>
</select>
所以当我用selectfield.value尝试时,我得到了value参数,但我需要文本。有什么方法可以得到这个文本,让值仍然是一个数字?
答案 0 :(得分:0)
我认为您可能正在寻找innerHTML
看看http://www.w3schools.com/jsref/prop_html_innerhtml.asp
您需要为每个选项分配一个ID,如:
<option id="option-1" value="1">Inner text</option>
...
<script>
var innerText = document.getElementById('option-1').innerHTML;
</script>
答案 1 :(得分:0)
上面的答案有点棘手,所以这就是我所做的:
<script>
function test() {
var x = document.getElementById('selectfield').selectedIndex;
alert(x);
}
</script>
和HTML:
<select id="selectfield" onChange="test()">
<option value="0"></option>
<option value="1"> something </option>
<option value="2"> something different </option>
<option value="3"> complete other text </option>
</select>
请注意这里的一些差异。首先,在javascript中,一个名为“.selectedIndex
”的DOM命令可以在框中选择选项。
现在我对HTML做了些什么,请注意几件事。首先,您有一个名为onChange
的事件处理程序,它调用我创建的名为test()
的函数。我还添加了一个空白选项,以便如果有人想要选择第一个选项,而不必单击第二个选项,然后第一个选择获得该选项。老实说,现在不需要那些value=""
属性。
如果您运行代码,您可能会注意到它不是返回文本,而是返回一个数字。 “一个号码?”你可能会问,“我想要文字!”。这是我给你的解决方案:
var option_Array = [];
option_Array[0] = "";
option_Array[1] = "something";
option_Array[2] = "something different";
option_Array[3] = "complete other text";
假设你有一个选项数组,现在你要做的就是使用变量x
作为数组的索引号,如下所示:
option = option_Array[x];
现在新的变量选项等于你点击的任何项目!
我希望这完全回答你的问题。我很感激有关这个答案的任何反馈,因为它是1:10 AM,我并不完美。
正如旁注,将parseInt()
放在一边可能是一个好主意
var x = parseInt(document.getElementById('selectfield').selectedIndex);
以防万一它将x
作为字符串而不是实数整数返回。