开发者问题收集

jQuery 无法找到 ID 为 [重复] 的 div

2020-11-23
178

我尝试使用 jQuery 将元素的显示样式更改为无(元素当前显示样式为块)。

我有以下 HTML:

<div id="loginModal">
   <div id="modalContent">
      <h1>Welcome To Crunch</h1>
      <br/>
      <span id="codeValidator">Please Enter A Valid Code</span><br/>
      <input type="text" id="codeInput" placeholder="Enter Room Code" /><br/>
      <input type="text" id="usernameInput" placeholder="Enter Username" /><br/>
      <button id="joinRoom">Join Room</button>
   </div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="app.js"></script>

以及 app.js 中的以下 Javascript:

$('#joinRoom').click(() => {
    $('#loginModal').style.display = 'none';
});

但是,每当我单击加入房间按钮时,我都会收到以下错误: app.js:4 Uncaught TypeError: Cannot set property 'display' of undefined

为什么会发生这种情况,我该如何修复?

3个回答

您正在尝试与对象 jquery 进行通信,而不是与 DOM 元素进行通信。这意味着语法应该是 jquery,而不是 javascript!

试试这个:

$('#joinRoom').click(() => {
    $('#loginModal').css('display', 'none');
});
$('#joinRoom').click(() => {
    $('#loginModal').css('display', 'none');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="loginModal">
   <div id="modalContent">
      <h1>Welcome To Crunch</h1>
      <br/>
      <span id="codeValidator">Please Enter A Valid Code</span><br/>
      <input type="text" id="codeInput" placeholder="Enter Room Code" /><br/>
      <input type="text" id="usernameInput" placeholder="Enter Username" /><br/>
      <button id="joinRoom">Join Room</button>
   </div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="app.js"></script>
s.kuznetsov
2020-11-23

您正在将 DOM 元素与 jQuery 混合使用。由于您正在使用 jQuery 库,因此您只需使用 show() 和 hide() 方法即可 以下是简单干净的修改

$('#joinRoom').click(() => {
    $('#loginModal').hide()
});

关于错误: .style.display = 'none' 将需要一个 DOM 元素。 您可能还想查看 toggle() 方法

Ranjeet Thorat
2020-11-23

从您的代码中,我发现您想要更改特定 div 的 css。 要更改 dom 元素的 css 属性,您可以使用 dom 元素的 .css() 函数。

在下面的示例中,您可以看到 id 为“#joinRoom”的 dom 元素的点击函数的回调函数之间的差异。

$(document).ready(function() {
  $('#joinRoom').click(function() {
    // change your css changing code line with below line
    $('#loginModal').css('display', 'none');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="loginModal">
  <div id="modalContent">
    <h1>Welcome To Crunch</h1>
    <br/>
    <span id="codeValidator">Please Enter A Valid Code</span><br/>
    <input type="text" id="codeInput" placeholder="Enter Room Code" /><br/>
    <input type="text" id="usernameInput" placeholder="Enter Username" /><br/>
    <button id="joinRoom">Join Room</button>
  </div>
</div>
Prem popatia
2020-11-23