1

我是 javascript 的初学者。

js文件

         var msgErrorPalletizedWeight = document.getElementById('msgError');
         function palletizedWeightValidation() {
              console.log("hello");
/*ERROR*/     msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked with *");
         }

HTML

<head runat="server">
   <title></title>
   <link href="Styles/Site.css" rel="stylesheet" type="text/css" />
   <script src="Scripts/file.js" type="text/javascript"></script>
</head>
<body>
    <p id="msgError"></p>
    <asp:Button ID="btnSubmitPalletized" runat="server" Text="Submit" 
                   OnClientClick="palletizedWeightValidation()" />
</body>

错误

无法读取 null 的属性“innerHTML”

我在这里问之前搜索了很多网站,他们都建议在我可以做的验证之前检查 null ,但我的问题是我想在p标签中添加一些文本,如您所见..如何实现?我什至尝试附加,认为它可能会解决问题。我知道这是一个愚蠢的错误,因为有很多关于此的帖子......问题是我不明白我哪里出错了。

请帮忙。

4

3 回答 3

4

trying要访问elementhtml 的时候不访问ready,把语句放在 event 函数中,就可以得到 function 中的元素palletizedWeightValidation

      function palletizedWeightValidation() {
              var msgErrorPalletizedWeight = document.getElementById('msgError');
              console.log("hello");
/*ERROR*/     msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked ith *");
         }

编辑 要停止 postback,您需要从 javascrip 函数返回 false 。

 <asp:Button ID="btnSubmitPalletized" runat="server" Text="Submit" 
                   OnClientClick="return palletizedWeightValidation()" />


      function palletizedWeightValidation() {
              var msgErrorPalletizedWeight = document.getElementById('msgError');
              console.log("hello");
/*ERROR*/     msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked ith *");
              return false; // returning true will cause postback.
         }
于 2012-12-17T06:54:59.530 回答
1

重要的是你的 js 文件何时被执行。如果你在 head 标签内加载 js 文件,你的文件将在 DOM 创建之前执行。这意味着,document.getElementById 函数返回 null。

于 2012-12-17T07:13:36.963 回答
0

你得到的错误是因为你试图读取一个 NULL 对象的属性。这意味着您的线路:

var msgErrorPalletizedWeight = document.getElementById('msgError');

在您的页面上找不到任何元素。

于 2012-12-17T06:54:45.170 回答