Javascript工作在FF + IE9,但不是IE8

Javascript Working in FF + IE9 but not IE8

本文关键字:IE8 IE9 工作 FF Javascript      更新时间:2023-09-26

正如标题所说,我的代码可以在最新的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>

IE不支持<option>onclick

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

详细说明请参见IE capture option element onclick

试着在这里用分号代替逗号:

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

这里的一个大问题是在您的showField函数:

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

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

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