Js中使用onload调用function和直接使用function的区别(Js获取不到后台下拉框数据)

简介:

最近在搞java web时候发现了一个小的问题,在js写上方法获取select中option的全部value,并将其作为字典的key保存dic1中,最开始我直接在js中调用获取value的方法GetSelectValues发现不能获取到对应的值(代码是完全没有问题的)。

//创建一个字典
var dic1 = new Array();
//获取下拉框下的值
function GetSelectValues(Id){
	 //获取select元素的引用
    var eduElement = document.getElementById(Id);
    //输出所有select元素下的所有option元素中对应的文本内容
    //1 获取所有的option标签
    var optionElements = eduElement.getElementsByTagName("option");
    //2 遍历option
     for(var i = 0; i<optionElements.length; i++){
        var optionElement = optionElements[i];
        //3 每一个option的子元素
        var textElement = optionElement.firstChild;
        //4 子元素的nodeValue
        dic1[textElement.nodeValue] = 0;
	} 
}
//js中直接调用写好的方法
GetSelectValues("BSSX");

上面的代码是获取不到,通过java后台传过来对应下拉框里的value值

问题与假设: 

我就在思考问什么没有获取对应的值呢!我开始猜测原因是不是可能数据在后台还有加载进来,就已经调用js中的方法所以获取为空呢,然后我在网上搜索当界面数据加载之后执行方法的办法是什么,然后修改如上代码如下。

//创建一个字典
var dic1 = new Array();
//获取下拉框下的值
function GetSelectValues(Id){
	 //获取select元素的引用
    var eduElement = document.getElementById(Id);
    //输出所有select元素下的所有option元素中对应的文本内容
    //1 获取所有的option标签
    var optionElements = eduElement.getElementsByTagName("option");
    //2 遍历option
     for(var i = 0; i<optionElements.length; i++){
        var optionElement = optionElements[i];
        //3 每一个option的子元素
        var textElement = optionElement.firstChild;
        //4 子元素的nodeValue
        dic1[textElement.nodeValue] = 0;
	} 
}
//当界面数据加载完毕之后执行的方法
window.onload = function () {
	GetSelectValues("BSSX");
}

成功解决js获取value为空的问题

总结:

作为一名程序员,我们要善于发现问题何解决问题,这样我们才会进步的更快,青春不息!奋斗不止!

猜你喜欢

转载自blog.csdn.net/m0_43432638/article/details/90701568