首页 > 解决方案 > 根据设备更改 Squarespace 按钮 URL

问题描述

尝试根据设备更改 Squarespace 按钮的 URL。值得一提的是,元素是动态创建的。

我已经按类搜索工作,因为我无法按 id 或查询选择器进行搜索。现在的问题是按类搜索会生成一个节点列表,我似乎无法获得一个 for 循环来正确选择 href。

可能是我不知道的其他问题。

这是我到目前为止尝试过的代码

<div class="sqs-block button-block sqs-block-button" data-block-type="53" id="block-yui_3_17_2_1_1634189249286_8011"><div class="sqs-block-content" id="yui_3_17_2_1_1634205387553_330">

<div class="sqs-block-button-container--center" data-animation-role="button" data-alignment="center" data-button-size="small" id="yui_3_17_2_1_1634205387553_329">
    <a href=“http:/google.com” class="sqs-block-button-element--small sqs-block-button-element" data-initialized="true">Learn more</a>
</div>
</div></div>

第一个 div 的类是搜索找到的类

 

 <script>

 let n = document.getElementsByClassName("sqs-block button-block sqs-block-button");

   for(var i=0; i < n.length; i++) 
   {
      n[i].addEventListener("click", function(e)
      {
        if(e.target && e.target.nodeName == "a") 
        {
          console.log("item clicked");
        }
      });
  }

</script>

标签: javascripthtmlsquarespace

解决方案


检查您的 navigator.userAgent 以查看您是否获得任何价值。此外,如果您的下载按钮在动态加载中,它不会像这样被选中。尝试在 if 逻辑之前控制台记录下载按钮以查看您获得的值。

要动态创建目标值,请检查事件委托: 什么是 DOM 事件委托?


推荐阅读