[英]document.getElementById() not working when call javascript function from code behind in c#
我有一個javascript函數,當單擊鏈接按鈕時,在default.aspx中工作正常。 但是,當我從后面的代碼中調用此函數時,它將無法工作。
這是default.aspx中我的代碼的一部分:
function loadAdditionalInfoDialog(qtyId)
{
alert(qtyId);
var qty = document.getElementById(qtyId).value;
alert(qty);
}
單擊按鈕時,這是我代碼后面(default.aspx.cs)的代碼的一部分:
protected void btnRedeemAll_Click(object sender, EventArgs e){
TextBox txtQty = (TextBox)itm.FindControl("txtQty");
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "<script>loadAdditionalInfoDialog(" + txtQty.ClientID + ")</script>", false);
}
alert(qtyId)對雙方都有效,並打印出相同的單詞。 (默認頁面和后面的代碼)。 但是后面的代碼無法警告(數量)。 有人知道我有什么問題嗎?
請注意,qtyId是default.aspx中轉發器內的文本框ID。
可能您傳遞了錯誤的ClientID
。
使用Java腳本調試器(例如FireBug)並檢查var qty = document.getElementById(qtyId);
不為null
(可能為null
)。
在這里也看看
您可以在下面嘗試嗎?
protected void btnRedeemAll_Click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", " <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
}
似乎您缺少有關正在傳遞的clientid的單引號。
您是否遺漏了引號'" + txtQty.ClientID + "'
的引號
protected void btnRedeemAll_Click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp"," <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
}
試試看:
Page.ClientScript.RegisterStartupScript(this.GetType(), "temp", "<script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
這是用於在初始頁面呈現期間綁定的腳本的方法。
我的猜測是問題是由您在按鈕單擊事件處理程序上創建控件txtQty引起的。
這是一個動態創建的控件,在ASP.NET引擎生成的HTML中可能不存在。
嘗試使用頁面上和您在設計視圖中添加的控件,並檢查是否遇到相同的問題。
更新:道歉。 在按鈕單擊事件處理程序中,您試圖找到控件。 你為什么要這么做? 該控件是在應用程序另一部分的某個位置創建的動態創建的控件嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.