2009-07-15 127 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