0

我对 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 有什么不同?

4

2 回答 2

2

您是否查看了浏览器的源代码以查看 textarea 的实际 id 是什么?可能是您将它放置在某个其他元素中,并且它继承了更长的 id。

否则,您可以使用以下方法获取 id:<%= serverOutputTextArea.ClientID%>

javascript 行看起来像这样:

$get('<%= serverOutputTextArea.ClientID %>').style.display = 'none';
于 2012-06-18T13:28:53.770 回答
1

只是为了确认: MainContent_serverOutputTextArea 是 textarea 的 id 吗?

如果是,您可以去 Firebug 并尝试将显示样式属性设置为无吗?或者出于绝望尝试可见性=隐藏。

但最终,您需要确保 $get 在 DOM 中选择正确的元素。

更新

嗯……我想我知道发生了什么。你有:

<textarea runat="server" id="serverOutputTextArea" ... visible="false">

您将 runat="server" 添加到 textarea 中,因此它将成为服务器控件,如果 Visible 属性为 false,则根本不会将其呈现到 HTML。

你知道这意味着什么吗?如果它未呈现,您的 JavaScript 将无法看到并选择它。将 Visible 属性设置为 true,它将起作用。

于 2012-06-18T13:28:39.900 回答