Javascript 切换不适用于本地主机

标签 javascript html css

<分区>

正如您在 JSFiddle 中看到的那样,登录和注册的切换工作正常,但是当我在我的本地机器上测试它时,它显示 bt2 的“Uncaught TypeError: Cannot read property 'addEventListener' of null”。

这是代码

CSS

#login
{

}
#register
{
    display:none;
}
#container{
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

input, select { 
    padding: 9px; 
    border: solid 1px #E5E5E5; 
    outline: 0; 
    font: normal 13px/100% Verdana, Tahoma, sans-serif; 
    width: 200px; 
    background: #FFFFFF url('bg_form.png') left top repeat-x; 
    background: -webkit-gradient(linear, left top, left 25, from(#FFFFFF), color-stop(4%, #EEEEEE), to(#FFFFFF)); 
    background: -moz-linear-gradient(top, #FFFFFF, #EEEEEE 1px, #FFFFFF 25px); 
    box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px; 
    -moz-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px; 
    -webkit-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px; 
    } 

select { 
    width: auto; 
       } 

input:hover, select:hover, 
input:focus, select:focus { 
    border-color: #C9C9C9; 
    -webkit-box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 8px; 
    } 


input[type=submit] { 
    width: auto; 
    padding: 9px 15px; 
    background: #617798; 
    border: 0; 
    font-size: 14px; 
    color: #FFFFFF; 
    -moz-border-radius: 5px; 
    -webkit-border-radius: 5px; 
    }

HTML

<div id="container">
<button id="bt1" type="button"> Login
</button>
<button id="bt2" type="button">Register
</button>
<br>
<div id="login">
Login Form
</div>
<div id="register">
<form action="#" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Salutation
</td>
<td>
<select name="Salutation">
<option value="Ms">Ms</option>
<option value="Mrs">Mrs</option>
<option value="Mr">Mr</option>
<option value="Dr">Dr</option>
</select>
</td>
</tr>
<tr>
<td>
First Name
</td>
<td>
<input type="text" name="F_Name">
</td>
</tr>
<tr>
<td>
Last Name
</td>
<td>
<input type="text" name="L_Name">
</td>
</tr>
<tr>
<td>
E-Mail
</td>
<td>
<input type="text" name="email">
</td>
</tr>
<tr>
<td>
Password(Min 6 characters)
</td>
<td>
<input type="password" name="pass">
</td>
</tr>
<tr>
<td>
Phone Number(10 digit)
</td>
<td>
<input type="text" name="P_Number">
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="Submit" value="Get Started" name="Submit">
</td>
</tr>
</table>
</form>
</div>
</div>

Javascript

function swap(login, register) {
    document.getElementById(login).style.display = 'block';
    document.getElementById(register).style.display = 'none';
}
document.getElementById('bt1').addEventListener('click',function(e){
    swap('login','register');
});
document.getElementById('bt2').addEventListener('click',function(e){
    swap('register','login');
});

我已经尽我所能去理解这个问题背后的原因,但我似乎无法理解。

如有任何帮助,我们将不胜感激。

最佳答案

您正在 HTML 头部加载脚本,而此时没有任何 DOM 元素存在,导致在未定义时调用 addEventListener 方法,从而引发错误。

两种解决方案:

  • 要么将代码包装在窗口加载监听器中
  • 或者简单地在 HTML 主体的末尾加载脚本

关于Javascript 切换不适用于本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28268176/

上一篇:html - 无法使用 CSS 垂直对齐元素

下一篇:HTML + CSS - 悬停时缩放图像

相关文章:

javascript - 在循环中解决所有 promise 后返回值

jquery - 单击菜单链接从一个 div 移动到另一个 div

javascript - jquery - 选择唯一的ID

javascript - 使用 D3 中的 Tipsy 使悬停文本变小

JavaScript - 使用唯一键存储对象?

javascript - 无法通过 Flask-socketIO 服务器在 HTML 客户端中显示来自 Python 客户端的视频流

css - 如何处理可能与背景颜色相似的边框颜色?

javascript - 如何使用 ASP.NET WebForms 在 Bootstrap 中正确插入来自 jQuery、javascript 和 CSS 的引用

javascript - React-Redux 将数据转换为 props

javascript - HTML 防止空格键滚动页面