Javascript 元素id不可访问
我有以下代码。在这里,在声明所有函数之前,我将变量的所有元素id声明为全局的。但是这些变量是由函数获取的 以下是示例:Javascript 元素id不可访问,javascript,Javascript,我有以下代码。在这里,在声明所有函数之前,我将变量的所有元素id声明为全局的。但是这些变量是由函数获取的 以下是示例: var ddlpf=document.getElementById('<%=ddlpf.ClientID%>'); var disp_msg=document.getElementById('<%=disp_msg.ClientID%>'); function btn_proceed_Click() { var ses='<%
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;
如果我在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
}
功能位置有效()
{
var ddlpf=document.getElementById(“”);
//代码
}
函数消息()
{
var disp_msg=document.getElementById(“”);
//代码
}
但是这些id是5个函数的公共id。不仅是这两个。我有20个id,这是5个大功能的共同点。这就是我在函数之外声明它们的原因
我应该做什么更改?我猜您正在将脚本放在HTML页面的顶部。因此,页面尚未完成加载,您甚至在document.body准备就绪之前就试图访问
document.getElementById
。因此,当您在函数中访问它们时,变量值将未定义
=>您的问题
这样试试看
var ddlpf;
var disp_msg;
window.onload = function(){
ddlpf=document.getElementById('<%=ddlpf.ClientID%>');
disp_msg=document.getElementById('<%=disp_msg.ClientID%>');
}
var-ddlpf;
var disp_msg;
window.onload=函数(){
ddlpf=document.getElementById(“”);
disp_msg=document.getElementById(“”);
}
这样,你就可以把代码放在任何地方。据我所知,你的问题和你想知道的代码
- 为什么全局变量似乎不起作用
ddlpf和disp\u msg在pos\u valid和message函数中不起作用
<h2>Element id is not accessible</h2>
<select id="ddlpf">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<button onclick=btn_proceed_Click()>proceed</button>
<div id="disp_msg">
</div>
元素id不可访问
1.
2.
3.
继续
这个javascript
var ddlpf=document.getElementById('ddlpf');
var disp_msg=document.getElementById('disp_msg');
function btn_proceed_Click()
{
if(pos_valid()==true)
{
var btn = document.getElementById('btn');
btn.innerHTML='success';
};
}
function pos_valid()
{
var pos_valid=false;
var ses, ccy, ccy1, ccy2, as11costbud;
var selectedIndex = ddlpf.selectedIndex
if(selectedIndex <= 0)
{
message("Please select the Portfolio. Your selection:" + selectedIndex);
return;
}
message("Your selection" + selectedIndex);
pos_valid=true;
return pos_valid;
}
function message(msg)
{
disp_msg.innerHTML=msg;
}
var-ddlpf=document.getElementById('ddlpf');
var disp_msg=document.getElementById('disp_msg');
功能btn\u继续\u单击()
{
if(pos_valid()==true)
{
var btn=document.getElementById('btn');
btn.innerHTML='success';
};
}
函数pos_valid()
{
var pos_valid=false;
变量ses、ccy、ccy1、ccy2、as11costbud;
var selectedIndex=ddlpf.selectedIndex
如果(selectedIndex ddlpf和disp_msg在pos_valid和message函数中不起作用您为什么使用奇怪的id?实际上我有另外4个使用这些id的函数我有5个使用相同重复id的大函数。这就是为什么我要将它们声明为全局变量,以便我可以在所有函数中访问它们。)ns,无需再次声明,再次检查控制台后,可能会出现一些错误消息?请注意,如果在相关元素存在之前声明全局变量,则以后不会自动更新变量。要回答“问题”,我们需要更多的信息:你预期会发生什么?会发生什么而不是预期的结果?你是如何将你的脚本放到页面上的?是的,aravind,现在我把相同的代码放在底部。它很有效。我很感激你help@Soombinakundi如果阿拉文给出了答案,请接受它,这样其他人就不会试图回答你已经解决的问题.谢谢。我已将脚本放在页面顶部。现在我根据aravind的想法更改了代码。它很有效。如果您发现我的脚本有用,我将非常感谢您的帮助。
var ddlpf=document.getElementById('ddlpf');
var disp_msg=document.getElementById('disp_msg');
function btn_proceed_Click()
{
if(pos_valid()==true)
{
var btn = document.getElementById('btn');
btn.innerHTML='success';
};
}
function pos_valid()
{
var pos_valid=false;
var ses, ccy, ccy1, ccy2, as11costbud;
var selectedIndex = ddlpf.selectedIndex
if(selectedIndex <= 0)
{
message("Please select the Portfolio. Your selection:" + selectedIndex);
return;
}
message("Your selection" + selectedIndex);
pos_valid=true;
return pos_valid;
}
function message(msg)
{
disp_msg.innerHTML=msg;
}