0

1 つの Web ページで使用される 2 つの別個の .aspx ファイルがあります。1 つはヘッダー用、もう 1 つは本文用です。本文ファイルの JavaScript で、ヘッダーから asp:label コントロールの値を取得するにはどうすればよいですか? その名前は「lblName」なので、単純に document.getElementById("lblName").value を試してみたところ、次のエラーが表示されました。

Microsoft JScript runtime error: Object required

このサイトは Visual Basic で書かれているので、コード ビハインドからもこれを行う方法を誰かが知っているかどうか疑問に思っています。

ブラウザ (IE) で F12 キーを押すと、次の階層が表示されます。

<head>
<frameset rows="147,*" frameBorder="no" frameSpacing="0">
   <frame name="frHeader" id="frHeader" src="DistHeader.aspx?statProducer=0707090003" noResize="noresize" scrolling="auto">
   DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
   <html>
     <head>
     <body topMargin="1" rightMargin="0" bottomMargin="0">
       <div class="clsNoPrint">
          <div class="clsNoPrint">
          <table width="100%">
             <tbody>
                <tr class="clsNameBar" width="100%">
                  <td width="*" align="left"> 
                     <span class="clsNameBar" id="lblName" style="width: 100%;">
4

2 に答える 2

1

ラベルにある場合runat="server"、ブラウザの ID はサーバーに表示されるものとは異なります。その ClinetID を何らかの方法で JS に渡す必要があります。たとえばPage.RegisterStartupScript、JS が aspx ファイルの一部である場合は、次のようなことができます。 document.getElementById('<%=lblName.ClientID %>')

別の問題: lblName は、<asp:Lable />を持たない span に変換されると思いますが、次の.valueようなものを使用できます。

document.getElementById('<%=lblName.ClientID %>').innerHTML

フレームを使用しているため、コードが配置されている場所に応じて、最初にフレームにアクセスする必要があります。

//Chrome, FF
document.getElementById("frHeader").contentDocument.getElementById("lblName") 

//IE (it does not support contentDocument and have document instead)
document.getElementById("frHeader").document.getElementById("lblName")

コードが実際にフレームを含む外側のドキュメントにあるとします。しかし、それが別のフレームにある場合は、window.parent.前に追加する必要がありますdocument.getElementById

于 2012-09-20T23:21:39.207 に答える
0

これはほぼ 10 年前に作成された Web サイトであるため、求めていた価値を得るには、フレームセットのはしごを上る必要がありました。以下のコードは、使用された方法でした

var el =  parent.parent.frames("frHeader").document.getElementById("lblName").innerText;    
于 2012-09-21T22:13:02.480 に答える