我以前从未这样做过,所以如果我没有很好地描述我的问题或没有使用所有正确的语法,我深表歉意。
我在我的网站上有一个电子邮件表格。用户可以输入消息,以及他们的姓名和一些其他数据。一旦他们完成填写表格,他们就可以提交它,它会发送到我的电子邮件,一切都很好。因为表单中包含 JavaScript,所以我自动使用 CSS 将其隐藏,然后通过 JavaScript 使其可见。这样,如果用户关闭了 JavaScript,表单就不会出现。
而且效果很好。而且我认为它也显示得很好。我在我所有的本地测试浏览器(Chrome 21、FF 14、IE 9、Opera 12 和 Safari 5)以及通过 Adobe Browser lab 对 IE 8、7 和 6 进行了检查。在所有这些浏览器中,它看起来都很棒。我什至在我的安卓手机和我女朋友的黑莓手机上检查过。看起来不错。
直到我在我妈妈的电脑上用 IE 8 测试它。虽然在 Adobe Browserlab 中它说表单显示,但在实际测试中表单没有显示。
你可以在这里自己测试一下。
问题在于表单 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,但她不使用的原因是完全不同的故事......)
谢谢你的帮助。我迫不及待地想知道解决方案是什么!