wordpress:如何使用JS更改动态生成的div的innerHTML?错误:'无法设置属性innerHTMl为null'

时间:2015-08-06 23:33:30

标签: javascript php jquery html wordpress

我正在尝试在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主题)。

  1. 在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' );
    }
    ?> 
    
  2. 尝试将true更改为false并从php函数中删除其中一个“true”/“false”。

  3. 我会比上一个问题(2天前)更快地选择最佳答案。预先感谢您的任何帮助。你们真的是最好的xo :)。

1 个答案:

答案 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;;