2017-07-28 133 views
0

加载页面后,我想(重新)给全局变量赋值。但是,尝试后它不会改变。将值赋给全局变量

html是动态生成的,并且包含一个select。根据存储在数据库中的车辆ID,可以在生成任何选项时进行选择。当车辆改变时,我需要旧的(当前)车辆ID将其关闭。

<select id="selVehicle"> 
    <option value="">&nbsp;</option> 
    <option selected value='1'>9999</option> 
    <option value='2'>9998</option> 
    <option value='3'>9997</option> 
</select> 

在我的.js文件中,我有全局变量的声明只是的document.ready()之前:

var oldVehicle = -1; 
$(document).ready(function() { 
    $(":text").on("blur", function() { 
     var tmp = ($(this).val()); 
     ($(this).val(tmp.toUpperCase())); 
    }); 

    //lots more onblurs and onchanges// 

    setOldVehicle(); 
}); 

function setOldVehicle() { 
    oldVehicle = $('selVehicle option:selected').val(); 
    alert(oldVehicle); 
} 

当我运行它,警报还称“-1” 。如何在页面加载后更新oldVehicle变量?

+1

'#selVehicle',你没有足够的''#这样的选择没有工作。此外,这实际上会提醒'undefined'。 –

+0

你的第一个提示应该是它永远不应该是“-1”,更不用说“仍然”-1。在浏览器中测试你的选择器:'$(“selVehicle”).length' - 它将为零。改变选择器并再次尝试'$(“#selVehicle”)。length'并从那里开始工作。 –

+0

我也建议避免全局变量。在需要时检索值,并将范围保持在最低要求。 –

回答

1

问题是这里oldVehicle = $('selVehicle option:selected').val();

由于您使用的ID,你需要通过#的ID选择

oldVehicle = $('#selVehicle option:selected').val(); 
1

你选择$('selVehicle option:selected').val();缺少"#"为元素的ID。

var oldVehicle = -1; 
 
$(document).ready(function() { 
 
    $(":text").on("blur", function() { 
 
    var tmp = ($(this).val()); 
 
    ($(this).val(tmp.toUpperCase())); 
 
    }); 
 

 
    //lots more onblurs and onchanges// 
 
    setOldVehicle(); 
 
}); 
 

 
function setOldVehicle() { 
 
    oldVehicle = $('#selVehicle option:selected').val(); 
 
    alert(oldVehicle); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="selVehicle"> 
 
    <option value="">&nbsp;</option> 
 
    <option selected value='1'>9999</option> 
 
    <option value='2'>9998</option> 
 
    <option value='3'>9997</option> 
 
</select>

+0

啊,另一个OperatorHeadspaceAndTiming错误再次罢工。要么是星期五,要么当我试图追踪这样的问题时,我需要扩大我的眼界。我确定我在全局变量上做错了什么,因为我很少使用它们。 :/ –