2016-10-06 27 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)