未捕获的类型错误:无法将属性“类型”设置为 null

我正在使用 asp.net 中的母版页,并在 chrome 浏览器检查工具控制台中收到以下错误。


未捕获的类型错误:无法在 HTMLInputElement.onclick 的 myFunction (StudentPassword.aspx:258) 处设置属性“类型”为 null


我想问题出在脚本标签上。我应该把它放在哪里?在标签内部还是在内容页的底部还是在母版页的底部?


母版页是:


  <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Student.master.cs" Inherits="Project_Placements.Student" %>


 <!DOCTYPE HTML>


 <HTML>

 <head runat="server">

 </head>

 <body>

 <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>

  <script type="text/javascript">

   

       function myFunction() {

           var checkBox = document.getElementById("myCheck");

           var pwd = document.getElementById("password");

           if (checkBox.checked == true) {

               pwd.type = 'password';

           } else {

               pwd.type = 'text';

           }

       }

   }

   </script>    

   </body>

   </html>

内容页代码如下:


 <%@ Page Title="" Language="C#" MasterPageFile="~/Student.Master" AutoEventWireup="true" 

 CodeBehind="StudentPassword.aspx.cs" Inherits="Project_Placements.WebForm7" %>


 <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">    

<form id="form1" runat="server">

 <asp:TextBox ID="password" runat="server"  TextMode="Password" ></asp:TextBox>

 <label for="myCheck">Show Password :</label> 

  <input type="checkbox" id="myCheck" onclick="myFunction()">

  </form>

  </asp:Content>


拉丁的传说
浏览 114回答 2
2回答

回首忆惘然

ASP.Net 将所有id从服务器端运行的父元素链接到id当前元素的所有元素,除非在服务器上被覆盖。所以输出id实际上看起来像ContentPlaceHolder1$Content3$form1$password.您可以使用 ends-with 选择器来省略它。var&nbsp;pwd&nbsp;=&nbsp;document.querySelector("[id$=password]").但是请注意,仍然选择唯一的id,这也将是唯一的,使用 end-with。或者,您可以使用数据属性并选择:<asp:TextBox&nbsp;ID="password"&nbsp;runat="server"&nbsp;&nbsp;TextMode="Password"&nbsp;data-id="password"&nbsp;/> var&nbsp;pwd&nbsp;=&nbsp;document.querySelector("[data-id=password]");最后你可以使用类似的东西:var&nbsp;pwd&nbsp;=&nbsp;document.getElementById('<%=password.ClientID&nbsp;%>');然而我从来没有真正喜欢过它,它要求脚本是内联的。

慕的地8271018

您收到错误是因为在完全渲染 DOM 之前加载了脚本。尝试将脚本的内容放在 document.ready 中,这应该可以解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript