2016-10-06 25 views
0

我试图运行此代码时出现错误"Cannot set property 'onchange' of null"。为什么它显示null如果它不是空白的?Woocommerce分类显示“无法设置属性nul”

此代码不是我的,我在谷歌找到它,但它似乎在为别人工作。

function woo_product_categories_dropdown($atts) { 
    extract(shortcode_atts(array(
    'count'   => '0', 
    'hierarchical' => '0', 
    'orderby'  => '' 
    ), $atts)); 

ob_start(); 

$c = $count; 
$h = $hierarchical; 
$o = (isset($orderby) && $orderby != '') ? $orderby : 'order'; 
?> 
<script type='text/javascript'> 
/* <![CDATA[ */ 
    var product_cat_dropdown = document.getElementById("dropdown_product_cat"); 
    function onProductCatChange() { 

     var urlmenu = document.getElementById('menu1'); 

      if (urlmenu) { 
      urlmenu.onchange = function() 
    { 
    window.open(this.options[ this.selectedIndex ].value,'_self'); 
    }; 
} 

     if (product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value !=='') { 
      location.href = "<?php echo home_url(); ?>/?product_cat="+product_cat_dropdown.options[product_cat_dropdown.selectedIndex].value; 
     } 
    } 
    product_cat_dropdown.onchange = onProductCatChange; 
/* ]]> */ 
</script> 
<?php 

return ob_get_clean(); 

}

回答

3

你有没有在你的HTML元素具有与 “菜单1” 的ID? 如果没有,您有几个选择:

  1. 您将不得不创建具有正确ID的元素。
  2. 重命名现有元素的ID。
  3. 更改脚本寻找以下行ID:

    var urlmenu = document.getElementById('newid');

  4. 如果你正在处理的情况是,前述ID可能会或可能不会在页面上显示出来,处理未定义的情况下等,例如: 在具有行:

    if (urlmenu)

更改为:

if (typeof(urlmenu) != "undefined" && urlmenu)