【问题标题】:Javascript: Changing visibility by clicking on div childJavascript:通过单击 div 子项更改可见性
【发布时间】:2019-06-03 20:16:17
【问题描述】:

代码完全独立工作,但不能与 html 的其余部分一起工作。我认为这是因为它无法找到要单击的子元素。

检查:https://ironpatch.co/apps/customify/view/example/1823535693868?variant=14751668666412&domain=ironpatch.co

测试:点击左下角的缩略图。

document.querySelector('[data-target="1"]').addEventListener('click', function() {
  var toolbar = document.getElementById('toolbar');
  toolbar.style.visibility = "hidden";
}, false);

document.querySelector('[data-target="0"]').addEventListener('click', function() {
  var toolbar = document.getElementById('toolbar');
  toolbar.style.visibility = "visible";
}, false);
<div class="editor_thumbnail">
  <ul id="side-switcher">
    <li class="thumb product-switch"><img data-target="0" src="https://upload.wikimedia.org/wikipedia/commons/0/09/Icon_1_%28set_basic%29.png" alt="" class="tooltip img_switcher img d_block tooltipstered"></li>
    <li class="thumb product-switch"><img data-target="1" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Icon_2_blue.svg/1024px-Icon_2_blue.svg.png"></li>
  </ul>
</div>


<ul id="toolbar">
  <li id="tab-ref-add_image" class="tab-link" data-tab="add_image"><a href="#" class="show"><i class="material-icons">add_a_photo</i><span class="icon-text txtLang">Add Art</span></a></li>
  <li id="tab-ref-add_text" class="tab-link" data-tab="add_text"><a href="#" class="show"><i class="material-icons">font_download</i><span class="icon-text txtLang">Add Text</span></a></li>
  <li id="tab-ref-add_layer" class="tab-link" data-tab="view_layer"><a href="#" class="show"><i class="material-icons">layers</i><span class="icon-text txtLang">Layers</span></a></li>
  <li id="tab-ref-save_data" class="tab-link" data-tab="save_data"><a href="#" class="show"><i class="material-icons">save</i><span class="icon-text txtLang">Save Product</span></a></li>
  <li id="tab-ref-load_saved" class="tab-link" data-tab="load_saved"><a href="#" class="show"><i class="material-icons">assignment_turned_in</i><span class="icon-text txtLang">Load</span></a></li>
</ul>

当单击棕色标签缩略图时,深灰色工具栏中的白色图标应该隐藏并且不起作用。

当点击白衬衫缩略图时,深灰色工具栏中的白色图标应该会显示并起作用。

【问题讨论】:

  • 我认为您遇到的问题是此 javascript 在页面完全加载之前正在运行,因此您尝试选择的缩略图尚不存在。
  • @dave morrissey 我明白了。我将如何解决这个问题?脚本放置在页面底部。
  • 你知道吗?您共享的链接在解析 https://ironpatch.co/apps/customify/view/example/hidetoolbar.js 时出现问题。上面的 javascript 点击事件在控制台上单独执行时可以正常工作。
  • @Panther 你知道我会怎么解决这个问题吗?

标签: javascript html css shopify


【解决方案1】:

为什么不使用子选择器,像这样:

// cache the toolbar
const toolbar = document.getElementById('toolbar');

// select the children elements (in this case elements with a class of ".child")
[...document.querySelectorAll("div > .child")].forEach((child) => {
  // add a click event listener to the child
  child.addEventListener("click", () => {
    // change the toolbar's visibility
    const visible = (toolbar.style.visibility === "visible");
    toolbar.style.visibility = visible ? "hidden" : "visible";
  });
});

注意:缓存toolbar 变量forEach 循环和/或事件侦听器的外部

祝你好运。

【讨论】:

  • 经过测试,但它似乎没有做任何事情:(
  • 它没有做任何事情,因为您需要更改 "div &gt; .child" 以匹配您的子元素的选择器。
  • 不确定我是否做得对。我试过这个(“#side-switcher > li”)和(“#side-switcher > .thumb”)
  • 尝试使用"#side-switcher img",如果不起作用,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2013-01-02
  • 2013-04-14
  • 2012-12-10
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多