javascript - 单击时显示子 Div

标签 javascript jquery html

我的网页上有一个时间线,它根据数据库中找到的事件数量重新绘制。对于每个新事件,我都会克隆 box1 并重命名一些变量。

但是对于我的 onClick 函数,保存时间线信息的 div 永远不会显示。我认为问题可能在于我试图显示的 Id 被引号括起来,因此无法找到 div 元素 id。

关于如何解决此问题有什么想法吗?

function showBox(clickedID) {
        var num = clickedID.split(/(\d+)/);
        var cardId ="card" + num[1];
    
        if ($(cardId).css('display') != 'none'){
          $(cardId).show();
        }else{
          $(cardId).hide();
        }
      }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<li id="box1" onclick="showBox(this.id)">
      <div id="card1" style="display:none">
          <time id="ticketNumberBox1"></time> <p id="shortDescriptionBox1"></p><p id="startDateBox1"></p>
      </div>
    </li>

最佳答案

    var cardId ="card" + num[1];

应该是

    var cardId ="#card" + num[1];

除了使用 .show.hide,您也可以使用 .toggle,但这取决于您。

<小时/>

正如 @connexo 指出的“OP 呈现的 HTML 无效,因为 li 没有 ul 或 ol 父级”,因此代码片段内部也发生了更改。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li id="box1" onclick="showBox(this.id)">k
  <div id="card1" style="display:none">asfadfsfd
      <time id="ticketNumberBox1"></time> <p id="shortDescriptionBox1"></p><p id="startDateBox1"></p>
  </div>
</li>
</ul>
<script type="text/javascript">
  function showBox(clickedID) {
    var num = clickedID.split(/(\d+)/);
    var cardId ="#card" + num[1];

    if ($(cardId).css('display') != 'none'){
      $(cardId).hide();
    }else{
      $(cardId).show();
    }
  }
</script>

注意我添加了随机字符,以便更容易查看/点击。

关于javascript - 单击时显示子 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674497/

相关文章:

javascript - 添加 jQuery UI 后,从表中删除行的函数不起作用

javascript - 如何根据不同的计算机停止不同大小的页面

html - 按百分比拉伸(stretch)响应元素

html - 竖排文字方向

asp.net - 参数未通过 Guid ID 传递到 MVC Controller

javascript - 在网络摄像头视频之上添加内容,即颜色叠加

javascript - 使用 CKEditor 以 HTML 格式发送电子邮件

javascript - jquery .data 在 remove() 和 append() 之后丢失

javascript - 使用嵌套的 ngFor 遍历两个单独的数组

Javascript block 删除