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

ブラウザのソースコードを調べて、テキストエリアの実際のIDを確認しましたか?他の要素内に配置されていて、より長いIDを継承している可能性があります。

それ以外の場合は、次を使用してIDを取得できます。<%= serverOutputTextArea.ClientID%>

javascriptの行は次のようになります。

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

確認のために:MainContent_serverOutputTextAreaはテキストエリアのIDですか?

はいの場合、Firebugに移動して、表示スタイル属性をnoneに設定してみてください。または絶望からvisibility=hiddenを試してください。

ただし、最終的には、$getがDOM内の正しい要素を選択していることを確認する必要があります。

アップデート

うーん...私は何が起こっているのか知っていると思います。あなたが持っている:

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

runat = "server"をテキストエリアに追加したので、サーバーコントロールになり、Visibleプロパティがfalseの場合、HTMLにレンダリングされません。

これが何を意味するか知っていますか?レンダリングされていない場合、JavaScriptはそれを表示して選択することができません。Visibleプロパティをtrueに設定すると、機能します。

于 2012-06-18T13:28:39.900 に答える