【发布时间】:2012-11-26 18:46:31
【问题描述】:
首先我想说我已经编写 JavaScript 大约 3 个月了,而且我不太关心通过标准或最佳实践来解决这个问题。我主要关心的是学习使用 DOM。我不想使用任何 jQuery,因为我不熟悉它。
我正在尝试使用 JavaScript 和 DOM 在我的页面上创建一个非专业的“登录”功能。首先,我使用的是“登录”屏幕,该屏幕最初会显示为“隐藏”,然后在使用时显示为“阻止”。当我通过向“登录屏幕”下方的页面主要部分添加较少的不透明度(0.1 不透明度)来在“登录”屏幕后面添加一个变暗的屏幕时,这效果很好并且看起来非常好。
当我关闭“登录”屏幕时,这个(不透明度)会恢复正常。所以你可以看到所有的东西都发生在同一个页面中,使用同一个 DOM。好的,这就是我希望它的工作方式:您创建一个用户名,然后您创建一个密码。轰隆隆,完蛋了!
但问题是:创建用户名和密码后,我希望它在登录链接最初所在的位置说“Hello (username here)”。我可以只使用 DOM 并将用户名插入 HTML 页面,但是当我提交作为登录功能的表单时,页面会重新加载并且对 DOM 的更改会被删除!
所以现在我可以告诉你我想到的解决方案:让表单(登录页面)在一个新窗口中,所以当表单被提交(并且 DOM 被操作)时,新窗口被重新加载,然后随后关闭,保留对主页面 DOM 的更改。唯一的问题是我无法弄清楚如何做到这一点。您可能会说这是一个主要问题哈哈哈。
那么,我可以从新窗口操作父窗口(即调用窗口)DOM 吗?
【问题讨论】:
-
您是否使用服务器端技术(ASP、PHP、JSP...)?还是只是普通的html + js?收到您提交的表单的任何内容都能够生成其 html,包括新的
Hello [username here]消息。 -
我使用的是纯 html+js。我不会在任何地方发送表格。像这样:
-
如果您不需要发布表单,请不要这样做:) jeje,只需“检测”用户单击提交按钮即可“删除”登录 div(您的第一种方法),但不允许它进行发布,因此您可以随意操作 DOM。
-
感谢您不发布表单的想法。在提交表单时,我只是验证输入,然后当它被验证为正常时,我可以操作 DOM,然后我只使用 preventDefault 或 window.event.returnValue(对于 IE)来防止表单被发布并且页面不会重新加载。问题解决了。我只是需要一个好主意,谢谢 Romier。
标签: javascript dom window.open