首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中单击,切换div的CSS类

在Oracle中单击,切换div的CSS类
EN

Stack Overflow用户
提问于 2021-06-14 21:35:21
回答 2查看 681关注 0票数 0

动态区域呈现HTML代码,如下所示:

代码语言:javascript
复制
<div class="col-sm-6 col-md-4 mb-30">
                    <div id="'||l_cnt||'" class="package_box" onClick=selectText('||i.PKG_ID||')>
                        <a id="'||i.PKG_ID||'" href="#" class="text_wht" onclick=setDetails('||i.PKG_ID||'); onClick=selectText('||i.PKG_ID||')
                            data-pkgid="'||i.PKG_ID||'" data-price="'||i.OFFERED_PRICE||'" data-pkgname="'||i.PKG_ARB_NAME||'">
                            <img src="'||i.TEMPLATE_IMG||'" class="img-center" onClick=changeClass()>
                        </a>
                        <div class="clearfix pad-15">
                            <h3 class="mt-0"><strong class="pull-left font_arial text-center">'||I.OFFERED_PRICE||'<br><span class="text_12 text_blck">SAR</span></strong>'||i.PKG_ARB_NAME||'</h3>
                            <div class="clear pad-5"></div>
                            <button type="button" class="btn btn-success btn-sm btn-rounded pull-left"><span class="font_arial">عدد الوجبات : '||I.NO_OF_MEALS||'</span> </button>
                            <a href="#" class="btn btn-success btn-sm btn-rounded btn-border" data-toggle="modal" data-target=".product-img'||i.PKG_ID||'">التفاصيل</a>
                        </div>
                    </div>
                </div>

当用户单击div中的img时,我希望将class="package_box"切换到class="package_box active"

我在下面使用JS函数,但它不起作用:

代码语言:javascript
复制
function changeClass() {
      var div = document.getElementsByClassName("package_box"); 
     document.getElementById("div").className = "package_box active";   
}

当用户单击图像时,如何切换使用此函数的类?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-14 22:16:45

你可以这样做:

代码语言:javascript
复制
function changeClass() {
  // Listen for the click event on the image.
  this.addEventListener('click', function(event) {
    /* Get the target's (img) closest relative up the DOM tree that matches
     * the class ".package_box" and on click, toggle the "active" class
    */
    event.target.closest('.package_box').classList.toggle('active');
  });
}

另外,您的onClick可能应该是小写和引号,例如onclick="changeClass()"

测试片段:

代码语言:javascript
复制
function changeClass() {
  this.addEventListener('click', function(event) {
    event.target.closest('.package_box').classList.toggle('active');
  });
}
代码语言:javascript
复制
.active {
  background: red;
}
代码语言:javascript
复制
<div class="package_box">
  <div>
    <img src="https://i.picsum.photos/id/0/543/543.jpg?hmac=vkQshP4GPU8JNGicpcjZANqwAY8T7FfIY-WU5khNLiQ" class="img-center" onclick="changeClass()">
  </div>

</div>

编辑:它可能无法在您的网站上工作,因为我意识到您正在用自己的单击事件将图像包装在<a>锚标记中--因此鼠标单击不会到达图像。

您可以在changeClass()函数中添加setDetails(),因为根据代码片段,图像将始终包装在a标记中。并且不需要将changeClass()添加到图像的onclick中。你可以把它去掉。

代码语言:javascript
复制
function changeClass(img) {
  // Get all the package_box elements
  let package = document.getElementsByClassName('package_box');

  // convert to an array and remove the active class from all of them.
  [...package].forEach(function(elem) {
    elem.classList.remove('active');
  });

  // Add the active class to the one we clicked.
  img.closest('.package_box').classList.add('active');

}

function setDetails() {
  //set details do stuff...
  // Use an event listener to find out which a tag we've clicked and pass the target.
  this.addEventListener('click', changeClass(event.target), false);
}
代码语言:javascript
复制
.active {
  background: red;
}

a {
  display: block;
}
代码语言:javascript
复制
<div class="package_box">
  <a href="#" onclick="setDetails()">
    <img src="https://picsum.photos/200/200" class="img-center">
  </a>

</div>

<div class="package_box">
  <a href="#" onclick="setDetails()">
    <img src="https://picsum.photos/200/200" class="img-center">
  </a>

</div>

<div class="package_box">
  <a href="#" onclick="setDetails()">
    <img src="https://picsum.photos/200/200" class="img-center">
  </a>

</div>

票数 1
EN

Stack Overflow用户

发布于 2021-06-15 13:45:26

尝试按以下方式更改您的功能

如果只想添加一个新类而不删除现有类

代码语言:javascript
复制
function changeClass() {
      $(".package_box").addClass("active");   
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67977504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档