我有以下代码。在这里,我在声明所有函数之前将所有元素id声明为全局变量。但是这些变量是由以下函数获取的,是示例:
var ddlpf=document.getElementById('<%=ddlpf.ClientID%>');
var disp_msg=document.getElementById('<%=disp_msg.ClientID%>');
function btn_proceed_Click()
{
var ses='<%=Session("hcur").toString %>';
if(pos_valid()==true)
alert('success');
}
function pos_valid()
{
var pos_valid=false;
var ses;
var ccy;
var ccy1;
var ccy2;
var as11costbud;
ses='<%=Session("hcur").toString %>';
var bm='<%=Session("benchmark").toString %>';
var dtsheet='<%=Session("dtsheet").toString %>';
var ratedis='<%=Session("ratedis").toString %>';
if(ddlpf.selectedIndex <= 0)
{
message("Please select the Portfolio");
return;
}
pos_valid=true;
return pos_valid;
}
function message(msg)
{
disp_msg.innerHTML=msg;
var modalPopupBehaviorCtrl = $find('modalpop');
modalPopupBehaviorCtrl.set_PopupControlID("poppan");
modalPopupBehaviorCtrl.show();
}
如果我在pos_valid()中声明变量“ ddlpf”,在message()中声明变量“ disp_masg”,则它起作用。代码是这样的:
function pos_valid()
{
var ddlpf=document.getElementById('<%=ddlpf.ClientID%>');
//code
}
function message()
{
var disp_msg=document.getElementById('<%=disp_msg.ClientID%>');
//code
}
但是这些ID是5个函数共有的。不只是这两个。我有5个大功能共有的20个ID。那就是为什么我在函数之外声明了它们。
我应该做出什么改变?
我猜您是将脚本放在HTML页面的顶部。因此该页面尚未完成加载,因此您试图document.getElementById
在document.body准备就绪之前访问。因此,当您在函数中访问它们时,变量值将是undefined
=>您的问题
这样尝试
var ddlpf;
var disp_msg;
window.onload = function(){
ddlpf=document.getElementById('<%=ddlpf.ClientID%>');
disp_msg=document.getElementById('<%=disp_msg.ClientID%>');
}
这样,您可以将代码放在任何地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句