2011-05-12 105 views
0

誰能halpe我這個錯誤:JavaScript未捕獲TypeError?

Uncaught TypeError: Cannot read 
property 'length' of undefined 

website

當您更改組合應該改變以下的價格值,但它不工作

function update_price_select2(o, element_name) 
{ 

    var sel_obj = null; 
    var element = null; 
    //price_original = <?php //echo substr($products_price,0,-1); ?>; 
    //alert("Preço Original:" + price_original); 
    if (document.getElementById) // DOM3 = IE5, NS6 
    { 
     sel_obj = document.getElementById(o); 
     //alert("sel_obj "+ sel_obj); 
     element = document.getElementById(element_name); 
     //alert("element "+ element); 
    } 
    //alert(o); 
    //alert(element_name); 
    var index = sel_obj.selectedIndex; 
    //alert(o+" index"); 
    var price_array = option_price[sel_obj.id]; 
    var price = price_array[index]; 
    var price_for_operation = price.substr(0,price.length -1); //the price from the option choosen 

    if (price_for_operation == '') 
    { 
     price_for_operation = 0; 
    } 

    //Ao preço original, vamos retirar o preço da variável que este tinha anteriormente. 
    current_product_price = current_product_price - option_price[sel_obj.id + '_current']; 
    //Vamos colocar o valor actual da variável seleccionada 
    option_price[sel_obj.id + '_current'] = price_for_operation; 

    if (price_for_operation != 0) 
    { 
     var final_price = roundNumber(parseFloat(current_product_price) + parseFloat(price_for_operation),2); 
     final_price = final_price.toFixed(2); 
    } 
    else 
    { 
     var final_price = current_product_price.toFixed(2); 
    } 
    //Nos save the decimal value, without the € or $, so we can use it in the next options call 
    current_product_price = final_price; 
    final_price = final_price + money_simbol; 

    if (final_price != "") 
    {  
     display_updated_price(final_price, element); 
     update_allowbuy(final_price); 
    } 

} 
+1

需要一些示例代碼 – 2011-05-12 14:29:21

+0

@Sachin Shanbhag更新 – 2011-05-12 14:32:53

+0

您好,當我裝你的網站我只是錯誤信息第895行的「order is null」。您的消息到底會在哪裏被解僱? – reporter 2011-05-12 14:35:02

回答

0

你可以發佈錯誤發生的地方嗎?您的錯誤告訴我,您嘗試訪問無法找到的對象的屬性長度。

我得到一個smiliar錯誤,當我訪問您的網頁:

var order = document.getElementById('".BUTTON_IN_CART."'); 
order.style.visibility = 'visible';` 

告訴我說,「命令」是不確定的,這是因爲它無法找到變量BUTTON_IN_CART,因此不會得到一個元件!你應該總是檢查你正在尋找的元素是否存在。

編輯:

擴展您的代碼來檢查該元素被發現:

if (document.getElementById) // DOM3 = IE5, NS6 
{ 
    sel_obj = document.getElementById(o); 
    //alert("sel_obj "+ sel_obj); 
    element = document.getElementById(element_name); 
    //alert("element "+ element); 
} 

if(sel_obj == null) { alert("Sell Obj not found!"); } 
if(element == null) { alert("Element not found!"); } 
+0

謝謝,我會檢查它是否存在 – 2011-05-12 14:41:17

2

檢查您的「price」是有效的值。如果「price」未定義,則不能像代碼中那樣使用行「price.length」。我的猜測是你的price肯定是undefined

+0

您說得對,價格未定,但爲什麼? – 2011-05-12 14:47:15

+0

@Daniel - 添加一些警報或日誌語句來檢查Price爲何未定義。檢查Price_Array和索引中的內容等。縮小問題範圍,然後解決問題。 – 2011-05-13 09:39:33

相關問題