0

下面的代码不起作用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'">

4

1 回答 1

1

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

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

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

解决方案:

  • 第 1 步:id='x'在您的name='x'. 并对您当前按名称访问的任何其他元素执行相同操作

  • 第 2 步:无论您在何处使用类似x元素名称的变量,请将变量名称替换为document.getElementById('x').

    是的,它更啰嗦,但这是正确的做法。

这将为您解决问题。

于 2013-03-24T16:01:10.150 回答