我在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浏览器中显示警报。它是如何发生的以及如何解决这个问题?感谢
答案 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;
}
答案 1 :(得分:0)
我也遇到了类似的错误,谷歌将我带到了这里。
就我而言,这也是旧版IE的语法不兼容问题:不支持使用arrow functions(=>
)。
要解决此问题,请参见Syntax error in IE using ES6 arrow functions。
不幸的是,IE告诉我该表达式下面的函数是未定义的,因此花了一段时间才找出实际的错误。
我希望这可以节省其他遇到相同问题的时间。