为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉丁的传说 2022-11-11 13:31:26
我正在使用 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>
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

ASP.Net 将所有id从服务器端运行的父元素链接到id当前元素的所有元素,除非在服务器上被覆盖。所以输出id实际上看起来像ContentPlaceHolder1$Content3$form1$password.

您可以使用 ends-with 选择器来省略它。

var pwd = document.querySelector("[id$=password]").

但是请注意,仍然选择唯一的id,这也将是唯一的,使用 end-with。

或者,您可以使用数据属性并选择:

<asp:TextBox ID="password" runat="server"  TextMode="Password" data-id="password" />
var pwd = document.querySelector("[data-id=password]");

最后你可以使用类似的东西:

var pwd = document.getElementById('<%=password.ClientID %>');

然而我从来没有真正喜欢过它,它要求脚本是内联的。



查看完整回答
反对 回复 2022-11-11
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您收到错误是因为在完全渲染 DOM 之前加载了脚本。尝试将脚本的内容放在 document.ready 中,这应该可以解决问题。



查看完整回答
反对 回复 2022-11-11
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信