如何修改由外部 JavaScript 创建的元素上的类

How to modify class on an element created by an external javascript

本文关键字:创建 JavaScript 元素 外部 何修改 修改      更新时间:2023-09-26

我的网站上有一个嵌入式脚本,它正在创建一个带有特定类的按钮。我在网页上的两个位置显示它,但希望在这两个位置为按钮分配不同的样式。我的问题:有没有办法"覆盖"由外部脚本创建的元素的类属性,仅在显示它的位置?

我可以控制的代码如下所示:

<div class="homepageslide">
    <script src="https://tool.reframeyourclients.com/js/insertfill-z0f1d1db4-41f6-4543-8de1-6d080ae1635b.js" type="text/javascript" id="ryc-insert-script-z0f1d1db4-41f6-4543-8de1-6d080ae1635b" onclick="javascript:ga('send', 'event', 'homepage-slider-grader', 'click');">
    </script>
</div>

在网站上,它呈现为:

<div class="homepageslide">
    <span id="ryc-fill-button-z0f1d1db4-41f6-4543-8de1-6d080ae1635b" type="button" class="rycfill-btn" style="color: rgb(122, 128, 0); border: 1px solid rgb(175, 183, 0); border-radius: 4px; font-family: Ubuntu-Regular; font-size: 15px;">Start Survey +</span>
    <script src="https://tool.reframeyourclients.com/js/insertfill-z0f1d1db4-41f6-4543-8de1-6d080ae1635b.js" type="text/javascript" id="ryc-insert-script-z0f1d1db4-41f6-4543-8de1-6d080ae1635b">
    </script>
</div>

嵌入式脚本创建该元素,我想为其操作类(删除"rycfill-btn"并添加"myClass"),并选择性地删除井后面的样式。这可能/如何?

提前感谢!

当然。您只需修改脚本应用于元素的现有类即可更改其外观。但是您在评论中提到您想编辑按钮的一个实例,而不是其他实例。如果该按钮具有一些特殊属性(例如,它始终是其父级的第n个子级),则仍然可以使用正确的CSS选择器执行此操作。但除此之外,你可以用JavaScript来做到这一点。

只需编写一个在现有脚本完成后运行的脚本。然后选择目标按钮并删除其现有类并替换它。

elements = document.getElementsByClassName('rycfill-btn');
theButton = elements[3]; // or whatever you need to do to get the one you want and ignore the other one
theButton.className = 'myClass'; // This should both add the new class and overwrite the old one

当然,您需要某种方法来区分要更改的按钮和不更改的按钮。如果您首先要更改,则可以在加载按钮之前运行修改按钮的脚本。否则,您需要了解一些有关它的信息(例如,它将始终是页面上的第二个实例)。

如果你使用 jQuery 或其他一些 DOM 操作库,你可能会做得更优雅。