IE上的Javascript parseInt错误

时间:2013-03-24 12:49:43

标签: javascript html5 internet-explorer

以下代码对IE不起作用,有人可以帮助我吗?

onclick="x.value=parseInt(b.value*d.value*c.value)+parseInt(a.value)

在所有其他浏览器上,它看起来很好并且进行计算并给出输出但是在IE上无论我做什么,输出都保持为0值,下面是我用于定位问题的整个表单更好:

<form id="mainselection">
        <h6>Transfer Fee Calculator</h6>    
<select name="a">
    <option value="0">Select</option>
    <option value="0">Dalaman</option>
    <option value="30">Bodrum</option>
</select>
<select name="b">
    <option value="0">Resort</option>
    <option value="10">Marmaris</option>
    <option value="12">Icmeler</option>
    <option value="18">Turunc</option>
</select>
<select name="c">
    <option value="0">Pax</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>  
</select>
<select name="d">
    <option value="1">One Way</option>
    <option value="2">Return</option>
</select>
<br />
<span class="total">Total:</span><output name="x" for="a b c ">0</output>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="currency">£</span>
<br />
<br />
<input type="button" value="Calculate" class="cal-but" onclick="x.value=parseInt(b.value*d.value*c.value)+parseInt(a.value)">
<input type="button" value="Book Now" class="book" onclick="window.location='reservation.html'">

1 个答案:

答案 0 :(得分:1)

首先要说的是,不是 IE漏洞。这与您使用非标准方式访问Javascript代码中的元素名称有关。

您遇到的问题是您使用元素'name属性作为全局Javascript变量。这不是(也从来没有)推荐的做法。一些浏览器支持它是出于向后兼容的原因,但这并不意味着它将继续在任何浏览器的未来版本中工作。它不是标准的,不应该使用。

直接在Javascript中访问单个元素的正确方法是使用getElementsById()方法。这将为您提供当前代码所没有的良好的跨浏览器兼容性。

解决方案:

  • 第1步:在id='x'旁边添加name='x'。对于您当前通过名称

  • 访问的任何其他元素,请执行相同的操作
  • 第2步:无论您在何处使用x等变量来表示元素名称,请将变量名称替换为document.getElementById('x')

    是的,这是多得多的啰嗦,但这是正确的做法。

这将为您解决问题。