Textbox无法获取属性'的值;值':对象为null或未定义



这是我第一次尝试将javascript合并到我的web应用程序中,而不是另一个固定脚本中。

我在ASP.net VB中有一个网络表单。在表单上我有一个复选框,当选中该复选框时,我希望它提示用户输入数量,然后我希望它从表单加载数据库查询中填写的另一个文本框中的数量中减去该数量。我的taqty没有从txtQtyAcc获取数量,出现错误无法获取属性"value"的值:对象为null或未定义我还看到计算的数量haqty变量有一个未定义的错误。我不确定我错过了什么。我检查了所有类似的问题,但没有找到解决方案。

  var taqty = document.getElementById('<%= txtQtyAcc.ClientId %>').value;
  var rejqty = prompt("Enter Reject Qty", "0");
  var haqty = taqty.value - rejqty;
   function rQty() {
        if (rejqty != null) {
            document.getElementById('<%= txtQtyRej.ClientID %>') = rejqty.value.toString;
            taqty.value = haqty.value.toString
        }
    }

我从代码后面调用checkbox.checkedchanged事件的脚本。

ScriptManager.RegisterClientScriptBlock(Me.Page, GetType(String), "rQtyFunction", "rQty();", True)

使用以下内容。

CCD_ 1。

注意,我使用了RegisterStartupScript来代替RegisterClientScriptBlock。如果您使用前者,即RegisterStartupScript,它会将所有脚本放在</form>标记的末尾,这意味着届时所有输入的DOM元素都将被添加,并且可以访问,您不会收到迄今为止收到的此类错误。

这使脚本能够调用或引用页面元素,而不会在页面的DOM中找不到它们。

RegisterClientScriptBlock<form>开始时将script添加到,因此存在相当大的错误可能性。

由于这是一个直接的脚本(不是一个可以调用的函数),它将立即由浏览器执行。但浏览器在这个阶段没有在页面的DOM中找到标签,因此您应该收到一个"Object not found"错误。

有关此用法的更多信息,请参阅此链接-RegisterStartupScript和RegisterClientScriptBlock之间的区别?

最新更新