Javascript在FF + IE9中工作但不在IE8中工作

时间:2011-09-15 15:04:52

标签: javascript

正如标题所说,我的代码适用于最新的Firefox和IE9,但不适用于IE8。谁能告诉我为什么?或者也许给我另一个解决方案来隐藏/显示基于所选元素的div。感谢

<script type="text/javascript">
<!--
    /* Hide drop down if certain option selected */
    function hideField(field_id){
        var field = document.getElementById(field_id);
        field.style.display = "none";
    }
    /* Show drop down if certain option selected */
    function showField(field_id){
        var field = document.getElementById(field_id);
        if(field.style.display = "none"){
            field.style.display = "block";
        }
    }
-->
</script>


                    <select name="subject" id="subject" >
                        <option value="unselected">Please Select...</option>
                        <option value="Advertising" onclick="hideField('browserRow'),hideField('versionRow')">Advertising</option>
                        <option value="Complaint" onclick="hideField('browserRow'),hideField('versionRow')">Complaint</option>
                        <option value="Content Issue" onclick="hideField('browserRow'),hideField('versionRow')">Content/Information</option>
                        <option value="Website Error" onclick="showField('browserRow'),showField('versionRow')">Website Bug/Error</option>
                        <option value="Website Feedback" onclick="hideField('browserRow'),hideField('versionRow')">Website Feedback</option>
                        <option value="Other" onclick="hideField('browserRow'),hideField('versionRow')">Other</option>
                    </select>

            <div class="row" id="browserRow">
                <label>Your Browser: <font color="#FF0000">*</font></label>
                <select name="browser" id="browser">
                    <option value="unselected">Please Select...</option>
                    <option value="Android">Android</option>
                    <option value="Google Chrome">Google Chrome</option>
                    <option value="Mozilla Firefox">Mozilla Firefox</option>
                    <option value="Internet Explorer">Internet Explorer</option>
                    <option value="Safari">Safari</option>
                    <option value="Opera">Opera</option>
                    <option value="Other">Other</option>
                </select>
             </div>

            <div class="row" id="versionRow">
                <label>Browser Version: <font color="#FF0000">*</font></label>
                <input type="text" name="version" value="<?php echo $session->userinfo['version']; ?>" maxlength="10" id="bVersion">
                <span class="error"><?php echo $form->error("version"); ?></span>
                <script language="javascript">
                    var number = document.getElementById('version');
                    selectItemByValue(number, '<?php echo $form->value('version'); ?>');
                </script>
            </div>

3 个答案:

答案 0 :(得分:4)

IE 不支持onclick的{​​{1}}。

解决方法是在<option>上使用onchange

有关详细说明,请参阅IE capture option element onclick

答案 1 :(得分:2)

请尝试在此处使用分号而不是逗号:

onclick="hideField('browserRow');hideField('versionRow')"

答案 2 :(得分:0)

您遇到的一个大问题是showField函数:

if(field.style.display = "none")

这行代码不正确。您在if()中使用了一个等于而不是双等于,因此它将设置显示的值而不是检查值是什么。

这不是IE8问题的原因,但这是一个需要指出的严重错误。 (虽然纯粹的运气,在这种情况下可能不会给你造成任何问题)