0

我有两个单独的 .aspx 文件,它们在一个网页中使用。一个用于标题,另一个用于正文。在正文文件的 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

由于这是一个几乎十年前创建的网站,我们必须在框架集中爬上梯子才能获得我们正在寻找的价值。下面的代码是使用的方法

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