2

在模糊事件不起作用时给出下面写的错误。我只是想将两个文本框中的值相乘。我做错了什么。

 TypeError: document.getElementById(...) is null .  
 var txt8 = document.getElementById("txtQuantity").value;   

<script type="text/javascript">
function CalcSellPrice2() {

    var txt8 = document.getElementById("txtQuantity").value;
    var txt9 = document.getElementById("txtUnit").value;
    document.getElementById("TextBox10").value = txt8 + txt9;
    document.getElementById(txtTotal).innerHTML = TotalPriceValue;
    }


</script>

<asp:TextBox ID="txtQuantity" runat="server" CssClass="span6" 
                                          onblur="CalcSellPrice2();"></asp:TextBox>
4

2 回答 2

3

由于TextBoxasp.net控件,因此您应该使用ClientID它来访问您的 asp 控件,因为asp.netrander HTML 带有标记并将ID每个父命名容器的ID值与控件的值连接起来(请参阅THIS)为

<%= txtQuantity.ClientID %>

所以你的脚本看起来像这样

var txt8 = document.getElementById(" <%= txtQuantity.ClientID %>").value;

或者

访问ASP.NET控件的另一种方法是使用属性ClientIDMode,一旦将其设置为Static它就不会连接ID每个父命名容器的值。所以您的 HTML 将如下所示。

<asp:TextBox ClientIDMode="Static" ID="txtQuantity" runat="server" CssClass="span6" onblur="CalcSellPrice2();"></asp:TextBox>

通过这种方式,您可以简单地访问您在问题中使用的 asp 控件,而无需使用ClientID

于 2013-07-26T04:34:50.833 回答
0

将属性ClientIDMode="Static"添加到文本框

<asp:TextBox ClientIDMode="Static" ID="txtQuantity" runat="server" CssClass="span6" 
                                          onblur="CalcSellPrice2();"></asp:TextBox>
于 2013-07-26T04:43:28.403 回答