2017-05-19 41 views
0

在IE 11中調用函數時出現了一些錯誤。在我的例子中,我在一個<script>標記中有兩個腳本。在IE 11中獲取未定義的JavaScript函數

這是我的函數:

<script> 
function test() 
{ 
    alert("oke"); 
    var currency = $('#curr_drop').val(); 
    var total_room_qty = calculate_amount(currency); // total all room 

    var btn_class = $('#book_button').prop('class'); 

    var this_qty = $(this).val(); 
    var this_plan_type = $(this).data('plan-type'); 
    var this_plan_id = $(this).data('plan-id'); 
    var this_plan_day = $(this).data('plan-day'); 
} 

function calculate_amount(currency = 'IDR') 
{ 
    //alert("ok"); 
    var nights = $('[name="nights"]').val(); 
    var total_amount = 0; var total_room_qty = 0; var total_qty_room_id = 0; 

    console.log('nights: '+nights); 


    return total_room_qty; 
} 
</script> 

我打電話,從這個代碼test功能:

<select name="qty" class="mb10" onchange="test.bind(this)()" data-plan-type="rate" data-plan-id="38" data-plan-day="52459"> 
    <option value="0">0 rooms</option> 
    <option value="1">1 rooms</option> 
    <option value="2">2 rooms</option> 
    <option value="3">3 rooms</option> 
    <option value="4">4 rooms</option> 
    <option value="5">5 rooms</option> 
</select> 

我的問題是,當我試圖表明alert在功能testundefined function test頂部,但如果我關閉var total_room_qty = calculate_amount(currency); // total all room該警報可以在IE 11瀏覽器中顯示。它是如何發生的以及如何解決這個問題?謝謝

+0

是後頁面選擇腳本標籤? –

+0

@MehdiDehghani我把這個腳本放在我的頁面底部,然後關閉'body'標籤 – Antonio

+0

這就是問題所在,改變順序,它會起作用 –

回答

0

calculate_amount的函數聲明是錯誤的。您正試圖在ie11中使用es6。

function calculate_amount(currency = 'IDR') // this will work only in chrome and firefox 

不幸的是IE沒有拋出錯誤。這就是您的事件處理程序無法訪問的原因。

將其更改爲

function calculate_amount(currency) 
{ 
    currency = currency || 'IDR'; //if your intent is to set a default value for currency 
    //alert("ok"); 
    var nights = $('[name="nights"]').val(); 
    var total_amount = 0; var total_room_qty = 0; var total_qty_room_id = 0; 

    console.log('nights: '+nights); 


    return total_room_qty; 
} 

例如 https://jsfiddle.net/karthick6891/0681reux/