2009-07-15 134 views
1

在我的MS SQL表中,我从一条记录中读取了城市的“time_zone”。从Javascript访问C#变量?

然后我想在JavaScript函数中使用此时区为该城市创建数字时钟。

目前,我试图从

这里设置变量TIME_ZONE从是一个Default.aspx的代码片段:

  function showtime() { 
       zone(hiddenZone,clock); 
      } 
     window.onload = showtime; 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <span id="clock"></span> 
    <asp:HiddenField ID="hiddenZone" runat="server" /> 
    <asp:Label Text="" ID="lblXml" runat="server"></asp:Label> 
    </div> 
    </form> 
</body> 
</html> 

唯一的C#我在Default.aspx.cs的是:

hiddenZone.Value=timeZone; 

我查过了,timeZone从数据库中读入了正确的值。

我从JS收到“欣欣”功能的错误消息是:“hiddenZone未定义”

我怎样才能获得的“TimeZone” C#可变进我的Javascript和使用它的功能是什么?

回答

4

你必须要检查的客户端ID hiddenZone。

function showtime() { 
       zone(
         document.getElementById('<%=hiddenZone.ClientID%>'), 
         clock 
        ); 
      } 

ASP.NET创建对象的新名称它创建的HTML页面上,所以他们不会是一样的,你指定什么ID是。

+1

使用.NET 4.0的ClientIdMode属性,您将在这种情况下拥有更大的灵活性。 http://www.dotnetcube.com/post/Overview-of-NET-40-features-e28093-ASPNET-40-ClientIDMode.aspx – DotnetDude 2009-07-15 17:29:17

0

把它放在服务器端标签,

 function showtime() { 
      zone('<%= hiddenZone.Value %>',clock); 
     } 
2

您可以通过替换使用现有的代码:

function showtime() { 
    zone(hiddenZone, 'clock'); 
} 

function showtime() { 
    var elem = document.getElementById('<%= hiddenZone.ClientID %>'); 
    // if you are using ASP.NET AJAX use: 
    // var elem = $get('<%= hiddenZone.ClientID %>'); 

    zone(elem.value, 'clock'); 
} 

我不知道你的 '区域' 功能所做的任何。但是,这样的事情可能你指出正确的方向,如果你也有与它的困难,以及:

function zone(tz, dispID) { 
    var elem = document.getElementById(dispID); 
    // if you are using ASP.NET AJAX use: 
    // var elem = $get(dispID); 

    elem.innerHTML = tz; 
} 

另外,如果它是你网页上的公用属性,你可以删除你的参考ASP:HiddenField只需使用:

function showtime() { 
    zone(<%= MyFormsTimeZoneProperty %>, clock); 
} 
+0

+1提及公共财产 – Anicho 2012-01-26 11:19:18