在IE 11中获取未定义的javascript函数

时间:2017-05-19 03:06:01

标签: javascript jquery function internet-explorer-11

我在IE 11中调用函数时遇到一些错误。在我的情况下,我在一个<script>标记内有两个脚本。

这是我的功能:

<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顶部显示test时我得到undefined function test但如果我关闭var total_room_qty = calculate_amount(currency); // total all room,则可以在IE 11浏览器中显示警报。它是如何发生的以及如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:5)

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/

答案 1 :(得分:0)

我也遇到了类似的错误,谷歌将我带到了这里。

就我而言,这也是旧版IE的语法不兼容问题:不支持使用arrow functions=>)。

要解决此问题,请参见Syntax error in IE using ES6 arrow functions

不幸的是,IE告诉我该表达式下面的函数是未定义的,因此花了一段时间才找出实际的错误。

我希望这可以节省其他遇到相同问题的时间。