吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1100|回复: 7
收起左侧

[已解决] [JavaScript] id要写在class前面吗?

[复制链接]
clearwater 发表于 2020-3-19 16:27
本帖最后由 clearwater 于 2020-3-19 16:34 编辑

  <!-- <div class="login-title" id="title">登陆会员 -->
      <div id="title" class="login-title">登陆会员

能不能教我一下为什么120行,我把id 写在 class后面,程序就会报错, 指出162行出错,Uncaught TypeError: Cannot read property 'addEventListener' of null

我把120注释掉,把id 提到div的前面来,程序就正常运行了。

id 一定要写在类的前面吗?



[JavaScript] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
    <style>
      ul,
        li,
        ol,
        dl,
        dt,
        dd,
        div,
        p,
        span,
        h1,
        h2,
        h3,
        h4,
        h5,
        h6,
        a {
            padding: 0px;
            margin: 0px;
        }
        a {
          text-decoration: none;
          color: #000;
        }
        .login-header {
          width: 100%;
          height: 30px;
          font-size: 24px;
          text-align: center;
          line-height: 30px;
        }
        .login {
          display: none;
          width: 512px;
          height: 280px;
          position: fixed;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
          background-color: pink;
          box-shadow: 0px 0px 20px #ddd;
          z-index: 999;
        }
        .login-title {
          position: relative;
          width: 100%;
          height: 40px;
          margin: 10px 0px 0px 0px;
          text-align: center;
          line-height: 40px;
          font-size: 18px;
          cursor: move;

        }
        /* 文本框标题上的关闭 */
        .login-title span {
          position: absolute;
          top: -30px;
          right: -20px;
          width: 40px;
          height: 40px;
          border-radius: 20px;
          border: #ebebeb solid 1px;
          background-color: purple;
        }
        .login-input {
          overflow: hidden;
          margin: 0px 0px 20px 0px;
        }
        /* input.list-input之间不能有空格 */
        .login-input input.list-input {
          width: 350px;
          height: 35px;
          border: #ebebeb 1px solid;
          line-height: 35px;
          text-indent: 5px;
        }
        .login-input label {
          /* label是行内元素,没有高宽,float是为了转化 */
          float: left;
          width: 90px;
          height: 35px;
          font-size: 14px;
          text-align: right;
          line-height: 35px;
        }
        .login-button {
          width: 50%;
          margin: 30px auto 0px auto;
          background-color: skyblue;
          text-align: center;
          line-height: 40px;
        }
        .login-bg {
          display: none;
          position: fixed;
          top: 0px;
          left: 0px;
          width: 100%;
          height: 100%;
          background:rgba(0,0,0, 0.3);

        }

    </style>
    
</head>
<body>
   <!-- header starts -->
   <div class="login-header"><a href="javascript:;" id="link">点击,弹出登录框</a></div>
   <!-- header ends -->
   <!-- login starts -->
   <div class="login" id="login">
      <!-- <div class="login-title" id="title">登陆会员 -->
      <div id="title" class="login-title">登陆会员
   
          <span><a href="javascript:void(0)" class="close-login" id="closeBtn">关闭</a></span>
      </div>
      <div class="login-input-content">
        <!-- 两个login-input的盒子的目的是为了分为上面两行。input是行内块元素,不分两个盒子会放在一行上 -->
          <div class="login-input">
            <label for="">用户名:</label>
            <input type="text" placeholder="请输入用户名" name="info[username]" id="username" class="list-input">  
          </div>
          <div class="login-input">
            <label for="">登录密码:</label>
            <input type="password" placeholder="请输入登陆密码" name="info[password]" id="password" class="list-input" >
          </div>

      </div>
      <div class="login-button" id="lognBtn"> <a href="javascript:void(0)"; id="long-button-submt">登陆会员</a></div>
   </div>
   <!-- login ends -->
    <!-- mask starts -->
    <div class="login-bg" id="bg"></div>
    <!-- mask ends -->
   <script>
    //  1. 获取元素
    var login = document.querySelector('.login');
    var mask = document.querySelector('.login-bg');
    var link = document.querySelector('#link');
    var closeBtn = document.querySelector('#closeBtn');
    var title = document.querySelector('#title');

    // 2.点击出层这个链接,让mask 和login显示出来
    link.addEventListener('click', function(){
      mask.style.display = 'block';
      login.style.display = 'block'
    })
    // 3. 点击closeBtn 就隐藏mask 和login

    closeBtn.addEventListener('click', function() {
                mask.style.display = 'none';
                login.style.display = 'none';
     })
    title.addEventListener('mousedown', function(e) {
            var x = e.pageX - login.offsetLeft;
            var y = e.pageY - login.offsetTop;
            // (2) 鼠标移动的时候,把鼠标在页面中的坐标,减去 鼠标在盒子内的坐标就是模态框的left和top值
            document.addEventListener('mousemove', move)

            function move(e) {
                login.style.left = e.pageX - x + 'px';
                login.style.top = e.pageY - y + 'px';
            }
            // (3) 鼠标弹起,就让鼠标移动事件移除
            document.addEventListener('mouseup', function() {
                document.removeEventListener('mousemove', move);
            })
        })
  
   </script>
</body>
</html>

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
青蛙头大哥 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

clddup 发表于 2020-3-19 16:33
<div class="login-title" id="title">  class 和id之间有了特殊符号    删掉重新打一个空格就好了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
clearwater + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| clearwater 发表于 2020-3-19 16:35
wangchuanlin 发表于 2020-3-19 16:33
class 和id之间有了特殊符号    删掉重新打一个空格就好了

万分感谢。
头像被屏蔽
mokson 发表于 2020-3-19 16:50
linguo2625469 发表于 2020-3-19 17:20
又是特殊符号空格的锅啊。。这个肯定不分前后的
KangLi 发表于 2020-3-19 17:21
id的优先级大于class,如果你给父元素设置了id,并且display:none,给子元素设置了class,就算子元素设置了display:block,子元素也不会显示出来,解决方法是在display:block后面加上!important
lhl188 发表于 2020-3-19 17:30
* { padding: 0px;
     margin: 0px;
}
前面可以这样写!
           
打工仔-知恩 发表于 2020-3-19 19:38
我一眼看过去,div没闭合
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 05:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表