我在asp.net页面中实现javascript控件时遇到了一些问题。我想有一组变量根据一些asp按钮控件获取它们的值。然后我根据它们的点击方式操纵这些按钮。我有一些问题:
所以这是我的代码。 TL,DR是我想在加载时通过js有条件地显示/隐藏按钮,然后在不同的按钮点击上隐藏/显示按钮。我知道这是一个范围问题,因为当我测试它们时全局变量返回“null”,但我不知道这个和onload问题的一个好的解决方法。谢谢!
var btnEdit = document.getElementById("<%= cmdEdit.ClientID %>");
var btnSave = document.getElementById("<%= cmdSave.ClientID %>");
var btnCanvel = document.getElementById("<%= cmdCancel.ClientID %>");
var btnConfirm = document.getElementById("<%= cmdConfirm.ClientID %>");
function HideEdit(){
$(btnEdit).hide();
$(btnSave).show();
$(btnCancel).show();
$(btnConfirm).hide();
document.getElementById("<%= pnlWhy.ClientID %>").style.visibility = "visible";
document.getElementById("<%= pnlRequest.ClientID %>").style.visibility = "visible";
}
function testme() {
alert(btnEdit)
}
function loadpage(newwine){
if (newwine==true){
$(btnEdit).hide();
$(btnSave).show();
$(btnCancel).show();
}
else{
$(btnEdit).show();
}
$(btnConfirm).hide();
}
答案 0 :(得分:2)
看起来你正在使用jQuery,尽管你没有在标签中提到它。无论如何,可能发生的是您的代码在页面元素实际存在之前运行。在这种情况下,全局引用将为null;实际上他们从零开始。
如果你正在使用jQuery,只需将你的代码放在“准备好”的处理程序中:
$(function() {
// all your code here
});
答案 1 :(得分:0)
为什么你没有通过jQuery找到元素?它更方便。您还可以通过jQuery方法.addClass(http://api.jquery.com/addClass/)方法设置或删除样式类。如果您在一次单击后设置可见性为真,则在另一次单击后设置可见性为false使用jQuery .toggle jQuery方法(http://api.jquery.com/toggle/)