我正在尝试在Wordpress / Woocommerce上使用动态生成的div类更改“查看购物车”按钮的innerHTML。我问了一个关于这个问题的前一个问题,并建议(谢谢Mike :))因为JS是一个onload事件,所以只有在用户单击“添加到购物车”按钮后才会更改类,因此js永远不会及时运行。
我需要知道如何在任何人看到之前更改“查看购物车”按钮的innerHTML。我想更改“查看购物车”--->“查看猫”这几个字。
这是我的网站:http://woocommerce-8778-19565-47619.cloudwaysapps.com/product-category/jewelry#。请点击“添加到购物车”,然后看到“查看购物车”按钮。
我写了一些非常基本的JS:
1. window.onload = function viewcart(){
2. document.querySelectorAll('.added_to_cart').innerHTML="view cats";
3. // document.querySelector('a.added_to_cart.wc-forward:before').innerHTML="view cats";
4. // document.getElementsByClassName('.wc-forward::after').innerHTML="view cats";
5. }
3-4是我试图解决问题的一些方法的例子。
有时出现'无法设置属性'innerHTML'为空'消息,但有时则不会出现。 元素检查器显示JS正在加载!
我按顺序做了什么(第1步,第2步,第3步): 1.通过将外部js表(viewcart.js)添加到带有STFP的子主题文件,将js加载到我的Wordpress(使用CHILD主题)。
在CHILD主题的functions.php中添加了以下内容:
<?php
add_action( 'wp_enqueue_scripts', 'child_add_scripts' );
function child_add_scripts() {
wp_register_script(
'viewcartscript',
get_stylesheet_directory_uri() . '/viewcart.js',
true,
false
);
wp_enqueue_script( 'viewcartscript' );
}
?>
尝试将true更改为false并从php函数中删除其中一个“true”/“false”。
我会比上一个问题(2天前)更快地选择最佳答案。预先感谢您的任何帮助。你们真的是最好的xo :)。
答案 0 :(得分:0)
Document.querySelectorAll(&#39; button.added_to_cart&#39;)返回文档中选择器的列表(nodelist),匹配&#39; .added_to_cart&#39;。正如Ian所说,最好的方法是循环这个列表并逐个更改其元素的内部html。 CSS Pseudo-classes永远不会返回任何元素。 编辑: 您还可以使用var elements = document.getElementsByClassName(&#39; added_to_cart&#39;); For(var i = 0; i&lt; elements.length; i ++) elements [i] .innerHtml =&#39;查看猫&#39;;