document.getElementById总是在不应该返回的地方返回空

时间:2019-10-01 14:25:29

标签: javascript

应用程序使用laravel 5.8, 而我想做的就是获取选定的值, 选择是使用select2生成的。

提取所选值的正确方法是什么?由于我总是无所适从。

视图:

<div class="form-group">
 <label>
  Select Industry
 </label>
<select name="industryid" id="industryid" class="findIndustry js-example-responsive" style="width: 100%">
</select>
<script type="text/javascript">
$('.findIndustry').select2({
minimumResultsForSearch: 3,
ajax: {
 url: '/cases/find_industry',
dataType: 'json',
delay: 250,
headers : {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
processResults: function(industry) {
return {
results: $.map(industry, function(industry) {
return {
text: industry.sra_industry+' - '+industry.sra_description,                                         id: industry.sra_industry                                           }                                       })
};
},
                                        });
</script>
</div>

我尝试获取所选值的地方:

var one = document.getElementById("industryid");

var two = document.getElementById("industryid").value;

// i trigger from some button
function reply_click()
{
console.log(one);
console.log(two);
}

console.log(one) is responding, but (two) always empty. 
result log below..

console.log(one) :

<select name="industryid" id="industryid" class="findIndustry js-example-responsive select2-hidden-accessible" style="width: 100%" data-select2-id="industryid" tabindex="-1" aria-hidden="true">`enter code here`
<option value="EFEK" data-select2-id="19">EFEK - Sector Company</option><
/select>

console.log(two) - empty :


///////////////////////

基于上面的示例,我想获取选定的值-> option value =“ EFEK”并将其存储在两个变量中。

谢谢

1 个答案:

答案 0 :(得分:0)

执行脚本时,这两行立即运行:

var one = document.getElementById("industryid");

var two = document.getElementById("industryid").value;

这意味着(如果尚未存在)元素,您将获得null的{​​{1}},第二行将失败。但是,如果元素存在(例如,如果one在HTML中的script之后),则会在selectone中获得{ 1}},因为在选择中什么都没有选择。

您希望在处理点击时获得值以后。而且由于""确实非常快,因此也没有理由不这样做:

two