未对 HTML 进行更改

Changes to HTML not happening

提问人:DJ Full_Price 提问时间:11/18/2023 最后编辑:DJ Full_Price 更新时间:11/18/2023 访问量:84

问:

我希望将子元素“.summary-thumbnail-event-date”隐藏在特定的父元素“#block-yui_3_17_2_1_1697649009477_55853”元素中。此代码有效。

function myFunction(parent_elem_id, child_elem ) {
  const hasID = document.getElementById(parent_elem_id);
  if (hasID !== null) {
    console.error('ID div not found');
  }
  var hasSelector = hasID.querySelector('.' + child_elem);
  if (hasSelector !== null) {
    console.error('Class div not found');
  }
  if (hasSelector) {
  // Change hasSelector var Name
    var OldDiv = hasSelector
    // Creates new div
    var NewDiv = document.createElement('div');
    NewDiv.className = child_elem;
    NewDiv.style.visibility = 'hidden';
    // Adjust the visibility
    NewDiv.innerHTML = OldDiv.innerHTML;
    // InsertBefore
    OldDiv.parentNode.insertBefore(NewDiv, OldDiv);
    OldDiv.parentNode.removeChild(OldDiv);
    return NewDiv
    } else {
      console.error('Child div not found');
    }
  }
//
document.addEventListener('DOMContentLoaded', function() {
  myFunction('block-yui_3_17_2_1_1697649009477_34199', 'summary-thumbnail-event-date');
  });

<div id='block-yui_3_17_2_1_1697649009477_34199'>
  <div class='summary-thumbnail-event-date'>
    <p>This is a block.</p>
  </div>
</div>
<div id='block-yui_3_17_2_1_1699287411992_11273'>
  <div class='summary-thumbnail-event-date'>
    <p>Something to think about.</p>
  </div>
</div>
<div id='block-yui_3_17_2_1_1697649009477_55853'>
  <div class='summary-thumbnail-event-date'>
    <p>This is the last block.</p>
  </div>
</div>

是的,你也可以这样做......对于函数。

function myFunction(x,y) {
var a = document.getElementById(x);
var b = a.querySelector('.'+y);
return b.style.visibility = "hidden";
};

我持续担心的是代码不会更改托管环境中的 html。我正在使用 squarespace.com

JavaScript HTML DOM

评论

5赞 Heretic Monkey 11/18/2023
为了其他人的缘故,请使用体面的变量名称来描述它们是什么。 什么也没告诉我。将缩小保存到缩小器。e
6赞 Heretic Monkey 11/18/2023
我不希望解码器环读取代码。
2赞 disinfor 11/18/2023
虽然这可能有点开玩笑——Heretic 和 Rory 是对的。使用没有描述性的变量很难提供帮助,因为我们需要阅读一堆代码并交叉引用每个变量在做什么。例如,而不是 和 ,类似 and 的东西会更有意义。xyparent_elem_idchild_elem
2赞 isherwood 11/18/2023
下次不行。现在。将所有信息放在您的问题中,否则它可能会被关闭。
1赞 isherwood 11/18/2023
代码是否在呈现的页面中更新?托管环境通常采用主动缓存。我不得不与网络主机通电话,并要求他们禁用第三方缓存插件,以便我可以在网站上工作。你能打开脚本文件并查看当前代码吗?

答:

-1赞 Vladislav Utkin 11/18/2023 #1

首先,尝试通过 DevTools 调试代码。观察使用函数进行更改时元素的行为方式。 看这里

代码看起来正确,但我不确定它在 Squarespace 服务中的功能。因此,您应该自己调试代码。

但无论如何,让我们看看你的例子

function myFunction(parent_elem_id, child_elem ) {
  const hasID = document.getElementById(parent_elem_id);
  if (hasID !== null) {
    console.error('ID div not found');
  }
  var hasSelector = hasID.querySelector('.' + child_elem);
  if (hasSelector !== null) {
    console.error('Class div not found');
  }
  if (hasSelector) {
  // Change hasSelector var Name
    var OldDiv = hasSelector
    // Creates new div
    var NewDiv = document.createElement('div');
    NewDiv.className = child_elem;
    NewDiv.style.visibility = 'hidden';
    // Adjust the visibility
    NewDiv.innerHTML = OldDiv.innerHTML;
    // InsertBefore
    OldDiv.parentNode.insertBefore(NewDiv, OldDiv);
    OldDiv.parentNode.removeChild(OldDiv);
    return NewDiv
    } else {
      console.error('Child div not found');
    }
  }

您可以简化一切。最初,只定义一个函数参数;对于您的任务来说,这确实足够了

function hideElement(selector) {}

您应该将正确的选择器作为参数传递。请记住,将字符串转换为选择器不是您的函数职责。从中构建正确的选择器。

hideElement('#block-yui_3_17_2_1_1697649009477_34199.summary-thumbnail-event-date');

此外,您可以找到该元素并验证其存在。

function hideElement(selector) {
  const target = document.querySelector(selector);
  if (target) return;
}

然后,您可以更改样式。

function hideElement(selector) {
  const target = document.querySelector(selector);
  if (target) return;
  target.style.display = 'none';
  // target.style.visibility = 'hidden';
}

最后,检查页面上的功能结果。但是,更好的方法是创建一个具有隐藏属性的 CSS 类并相应地切换它。

.hidden {
  visibility: hidden;
}
function toggleHiding(selector) {
  const target = document.querySelector(selector);
  if (target) return;
  target.classList.toggle('hidden');
}

最好的方法 - 使用清晰方便的类构建标记。

<div class="card" id="block-yui_3_17_2_1_1697649009477_34199">
  <div class="card-content summary-thumbnail-event-date">
    <p class="card-text">This is a block.</p>
  </div>
</div>
<div class="card" id="block-yui_3_17_2_1_1697649009477_34199">
  <div class="card-content summary-thumbnail-event-date">
    <p class="card-text">Something to think about.</p>
  </div>
</div>

评论

0赞 DJ Full_Price 11/18/2023
现在请看一看。找到小编辑按钮。谢谢你的想法。
0赞 Michael M. 11/19/2023
这并不能提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论。 - 来自评论