我有Javascript的奇怪问题,我正在尝试实现系统更新一些东西,当我按下按钮时我想隐藏除“MainContent_UpdateProgress”之外的所有内容,但文本区域仍然可见。
asp.net中的文本区域如下所示:
<textarea runat="server" id="serverOutputTextArea" cols="50" rows="30" name="serverOutputTextArea" visible="false">
Javascript代码:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args) {
if (prm.get_isInAsyncPostBack())
args.set_cancel(true);
postBackElement = args.get_postBackElement();
if (postBackElement.id == 'MainContent_UpdateAnalysisSystem')
{
$get('MainContent_serverOutputTextArea').style.display = 'none'; //Doesn't work
$get('MainContent_UpdateProgress').style.display = 'block'; //Works
$get('MainContent_ProcessingStatus_Label').style.display = 'none'; //Works
$get('MainContent_ShowDetails_Button').style.display = 'none'; //Works
}
}
问题是,textarea有什么不同?
答案 0 :(得分:2)
您是否查看了浏览器的源代码以查看textarea的实际ID是什么?可能是你将它放在其他元素中并且它继承了更长的id。
否则,您可以使用以下代码获取ID:<%= serverOutputTextArea.ClientID%>
javascript行看起来像这样:
$get('<%= serverOutputTextArea.ClientID %>').style.display = 'none';
答案 1 :(得分:1)
只是为了确认:MainContent_serverOutputTextArea是textarea的id吗?
如果是,您可以访问Firebug并尝试将显示样式属性设置为none吗?或者绝望之后尝试visibility = hidden。
但最终,你需要确保$ get正在选择DOM中的正确元素。
<textarea runat="server" id="serverOutputTextArea" ... visible="false">
您将runat =“server”添加到textarea,因此它将是一个服务器控件,如果Visible属性为false,则它将不会呈现给HTML。
你知道这意味着什么吗?如果它没有呈现,您的JavaScript将无法看到它并选择。将Visible属性设置为true,它将起作用。