getElementsByClassName 显示 select 框中的未定义值
getElementsByClassName shows undefined value from select box
我的选项列表 HTML 中有以下代码:
<p>Choose</p>
<select id="depo" value="depo" name="departs">
<option value="IT" name="departs" class="department">IT </option>
<option value="Literature" name="departs" class="department">Literature</option>
<option value="Math" name="departs" class="department">Math </option>
<option value="Biology" name="departs" class="department">Biology </option>
<option value="Physics" name="departs" class="department">Physics </option>
</select>
<button class = "button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
这是 JS 代码:
function form_sub()
{
var d_opt = document.getElementsByClassName("department");
var choosen_dep;
for(var x = 0; x<d_opt.length; x++)
{
if(d_opt[x] == true)
choosen_dep = d_opt[x].value;
}
document.getElementById("show_results").innerHTML="</br>" +choosen_dep+ "</br>";
}
每次我 select 我的 select 框中的任何选项时,代码中返回的值是:undefined
(在带有 show_results 的段落的字段中功能)。
每次我 select 我的 select 框中的任何选项时,代码中返回的值是:undefined
(在带有 show_results 函数的段落的框中)。
当我删除 if(d_opt[x] == true)
时,返回值始终等于 select 框中的最后一个字段 - 即“Physics”。
我不知道问题出在哪里 - 我尝试了这两种方法,但都没有 returns 我在表格中 select 编辑的内容。有谁知道哪里出了问题?
您的每个 d_opt[x]
值都将始终是一个 HTMLOptionElement 对象,而不是布尔值。将它们与 true
.
进行比较毫无意义
要获得 selected 选项,请阅读 select 元素的 value
。
function form_sub() {
var d_select = document.getElementById("depo");
document.getElementById("show_results").innerHTML = "<br>" + d_select.value + "<br>";
}
<select id="depo" value="depo" name="departs">
<option value="IT" name="departs" class="department">IT</option>
<option value="Literature" name="departs" class="department">Literature</option>
<option value="Math" name="departs" class="department">Math</option>
<option value="Biology" name="departs" class="department">Biology</option>
<option value="Physics" name="departs" class="department">Physics</option>
</select>
<button class="button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
另请注意,br
元素的 start 标签是强制性的,但禁止使用 end 标签。您正在尝试插入没有开始标记的结束标记。
这应该可以正常工作。将您的代码包含在表单标签中
<body>
<p>Choose</p>
<form name = "deps">
<select id="depo" name="departs">
<option value="IT" >IT </option>
<option value="Literature">Literature</option>
<option value="Math" >Math </option>
<option value="Biology" >Biology </option>
<option value="Physics" >Physics </option>
</select>
<button class = "button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
</form>
<script>
function form_sub()
{
var d_opt = document.deps.departs.value;
document.getElementById("show_results").innerHTML="</br>" +d_opt+ "</br>";
}
</script>
</body>
我的选项列表 HTML 中有以下代码:
<p>Choose</p>
<select id="depo" value="depo" name="departs">
<option value="IT" name="departs" class="department">IT </option>
<option value="Literature" name="departs" class="department">Literature</option>
<option value="Math" name="departs" class="department">Math </option>
<option value="Biology" name="departs" class="department">Biology </option>
<option value="Physics" name="departs" class="department">Physics </option>
</select>
<button class = "button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
这是 JS 代码:
function form_sub()
{
var d_opt = document.getElementsByClassName("department");
var choosen_dep;
for(var x = 0; x<d_opt.length; x++)
{
if(d_opt[x] == true)
choosen_dep = d_opt[x].value;
}
document.getElementById("show_results").innerHTML="</br>" +choosen_dep+ "</br>";
}
每次我 select 我的 select 框中的任何选项时,代码中返回的值是:undefined
(在带有 show_results 的段落的字段中功能)。
每次我 select 我的 select 框中的任何选项时,代码中返回的值是:undefined
(在带有 show_results 函数的段落的框中)。
当我删除 if(d_opt[x] == true)
时,返回值始终等于 select 框中的最后一个字段 - 即“Physics”。
我不知道问题出在哪里 - 我尝试了这两种方法,但都没有 returns 我在表格中 select 编辑的内容。有谁知道哪里出了问题?
您的每个 d_opt[x]
值都将始终是一个 HTMLOptionElement 对象,而不是布尔值。将它们与 true
.
要获得 selected 选项,请阅读 select 元素的 value
。
function form_sub() {
var d_select = document.getElementById("depo");
document.getElementById("show_results").innerHTML = "<br>" + d_select.value + "<br>";
}
<select id="depo" value="depo" name="departs">
<option value="IT" name="departs" class="department">IT</option>
<option value="Literature" name="departs" class="department">Literature</option>
<option value="Math" name="departs" class="department">Math</option>
<option value="Biology" name="departs" class="department">Biology</option>
<option value="Physics" name="departs" class="department">Physics</option>
</select>
<button class="button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
另请注意,br
元素的 start 标签是强制性的,但禁止使用 end 标签。您正在尝试插入没有开始标记的结束标记。
这应该可以正常工作。将您的代码包含在表单标签中
<body>
<p>Choose</p>
<form name = "deps">
<select id="depo" name="departs">
<option value="IT" >IT </option>
<option value="Literature">Literature</option>
<option value="Math" >Math </option>
<option value="Biology" >Biology </option>
<option value="Physics" >Physics </option>
</select>
<button class = "button" onclick="form_sub(); return false;">Submit</button>
<p id="show_results"></p>
</form>
<script>
function form_sub()
{
var d_opt = document.deps.departs.value;
document.getElementById("show_results").innerHTML="</br>" +d_opt+ "</br>";
}
</script>
</body>