javascript - 不同的链接取决于div-id?

标签 javascript jquery html

我正在尝试根据 divid 来添加不同的链接 href

a 元素是通过 jQuery 添加的。

我尝试过

$id = document.getElementsByClassName("content-box")[0].id;

但是我不知道如何执行switch-case。我不知道如何检索所有 id。

有没有人有更好的主意,可以给我一个如何解决这个问题的提示?

$link = "#";
$id = "";

switch($id){
 case "box-1":
 $link = "https://www.google.com/";
 break;
 
 case "box-2":
 $link = "https://stackoverflow.com/";
 break;
 
 case "box-3":
 $link = "https://www.apple.com/no/";
 break;
}

jQuery( '.container h2' ).after( 
'<a href="'+ $link +'" id="button-order">Read more</a>'
);
.container {
  display: flex;
}

.content-box {
  width: 30%;
  height: 100px;
  border: 1px solid #000;
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div id="box-1" class="content-box">
    <h2>Title 1</h2>
  </div>
  
  <div id="box-2" class="content-box">
    <h2>Title 2</h2>
  </div>
  
  <div id="box-3" class="content-box">
    <h2>Title 3</h2>
  </div>
</div>

最佳答案

$id = document.getElementsByClassName("content-box")[0].id;

仅引用 .getElementsByClassList 返回的 HTMLCollection 索引 0 处的元素。

您可以在 forfor..of 循环中使用迭代 classList 来引用索引 N 处的当前元素HTMLCollection 并获取该元素的 id 传递给 switch,用 替换 .insertAdjacentHTML() >“beforeend” 设置为第一个参数,HTML 字符串设置为第二个参数

for (let box of document.getElementsByClassName("content-box")) {

  let $link = "#";
  const $id = box.id;

  switch ($id) {
    case "box-1":
      $link = "https://www.google.com/";
      break;

    case "box-2":
      $link = "https://stackoverflow.com/";
      break;

    case "box-3":
      $link = "https://www.apple.com/no/";
      break;
  }

  box.insertAdjacentHTML("beforeend"
  , '<a href="' + $link + '" id="button-order">Read more</a>');

}
.container {
  display: flex;
}

.content-box {
  width: 30%;
  height: 100px;
  border: 1px solid #000;
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div id="box-1" class="content-box">
    <h2>Title 1</h2>
  </div>

  <div id="box-2" class="content-box">
    <h2>Title 2</h2>
  </div>

  <div id="box-3" class="content-box">
    <h2>Title 3</h2>
  </div>
</div>

或者

for (let boxes = document.getElementsByClassName("content-box"), i = 0
    ; i < boxes.length; i++) {

  let $link = "#";
  const box = boxes[i];
  const $id = box.id;

  // same code at `for..of` loop
}

关于javascript - 不同的链接取决于div-id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54920529/

相关文章:

javascript - 如何访问此 json 对象中的 'img'? PHP,Laravel-5

jQuery 在隐藏时停止 HTML5 视频,在可见时重新启动

javascript - Moment JS - 计算两个日期之间的持续时间(以小时为单位)

jquery - 使用 JQuery 设置 div 的高度属性会产生不一致的行为

html - 使一行带有边框和边距的 div 动态填充宽度

javascript - 根据提交按钮更改表单操作

javascript - 为什么 clearTimeout 不清除此 react 组件中的超时?

javascript - 如何在 Javascript 中创建正则表达式来验证输入框

html - 如何在css中播放动画后更改按钮颜色

javascript - 使用 html/js 创建可点击网格的最有效方法是什么?