document.getElementByID在IE 8中不起作用

时间:2012-08-09 04:58:46

标签: javascript forms internet-explorer-8 getelementbyid

我之前从未这样做过,所以如果我没有充分描述我的问题或者没有使用所有正确的语法,我道歉。

我在网站上的内容是电子邮件表格。用户可以键入消息,以及他们的姓名和其他一些数据。一旦他们填写完表格,他们就可以提交,然后转到我的电子邮箱,一切都很顺利。因为表单中包含JavaScript,所以我自动将其隐藏在CSS中,然后通过JavaScript将其显示出来。这样,如果用户关闭了JavaScript,则表单不会出现。

它很棒。我认为它也表现得很好。我在所有本地测试浏览器(Chrome 21,FF 14,IE 9,Opera 12和Safari 5)以及IE浏览器8,7和6的Adobe浏览器实验室中进行了检查。在所有这些浏览器中,它看起来很棒。我甚至在我的Android手机和我女朋友的黑莓手机上检查了它。看起来很好。

直到我在妈妈的计算机上使用IE 8测试它。虽然在Adobe Browserlab中它表示表单显示,但在真实的测试中表单没有显示。

您可以自己测试here

问题在于表单id,“emailForm”。我的表格有这样的标记:

    <form id="emailForm" method="POST" action="../javascript/email_form.php" onSubmit="return validateForm();">
        <label id="emailSubjectLabel">Email Subject*:</label><input class="form" title="Email Subject" type="text" name="subject" id="emailSubject"><br>
        <label id="nameLabel">Your Name*:</label><input class="form" title="Your Name" type="text" name="name" id="yourName"><br>
        <label id="emailLabel">Your Email:</label><input class="form" title="Your Email Address" type="text" name="email" id="yourEmail"><br>
        <label id="messageLabel">Your Message*:</label>
        <textarea class="form" title="Write Something..." name="message" id="message" cols="40" rows="5"></textarea>
        <input class="button" type="submit" value="Submit">
        <p class="error">* required.</p>
    </form> 

我的CSS有很多代码,但它有关于使表单不可见的问题:

    #emailForm, #javaText {
        display: none;  
    }

(注意:#javaText是屏幕上的一些文本,除非用户安装了JavaScript,否则也是隐藏的。它在IE 8中也不起作用。为了简单起见,我没有提到它。)

JavaScript看起来像这样:

    document.getElementById("emailForm").style.display = "block";
    document.getElementById("javaText").style.display = "inline";

    function validateForm() {
    //function that validates the form
    }

我已将JavaScript放在页面底部,希望它有所帮助。我已经尝试在主HTML页面上更改内容的样式,我已经检查了我母亲的JavaScript并启用了它。我只是不知道它为什么不起作用。

如果有人能告诉我我做错了什么,我会非常感激。这让我头疼了一个星期了。

(是的,我告诉她IE浏览器糟透了,她应该选择Chrome,但她不这样做的原因完全不同......)

感谢您的帮助。我迫不及待地想知道解决方案是什么!

1 个答案:

答案 0 :(得分:2)

IE8未加载form_validation.js文件,这就是为什么它没有在该文件中运行初始化代码。

您需要将脚本代码的类型更改为type="text/javascript"或完全删除该类型。您的type="application/javascript"不正确。

经过进一步探索后,请参阅Why doesn't IE8 recognize type="application/javascript" in a script tag?以获取更多讨论。