【发布时间】:2017-10-16 20:45:59
【问题描述】:
所以基本上我有一个使用下拉框的 HTML 表单。提交表单时,它会调用我编写的函数。但是,在提交此表单后,它会进入另一个 HTML 页面,在该页面中需要使用该表单的数据表单,但它不再可用,我不知道为什么。
<body>
<h1>Select your input:</h1>
<form id="customize" name="customize" method="get" action="index.html" onSubmit="return checkInfo();">
<p>Please select the right value</p>
<select id="val1" name="val1">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<input type="submit" value="submit" />
</form>
</body>
function checkInfo() {
var1 = document.getElementById('var1').value;
return true;
}
我遗漏了一些涉及其他变量且与此问题无关的 javascript 代码,这就是为什么它总是返回 true 的原因,因为我没有显示返回 false 的选项。我怀疑这要么与非全局变量有关,要么由于某种原因无法从同一个 Javascript 文件中的不同函数访问这个 var1。基本上是提交表单,调用函数,创建变量并分配数据,然后当函数返回 true 时加载另一个 HTML 页面,该页面调用同一 Javascript 文件中的单独函数,该 Javascript 文件使用该 var1 进行计算.
我最终使用了以下用户向我推荐的本地存储 API。这是我使用的链接:https://www.w3schools.com/html/html5_webstorage.asp
【问题讨论】:
-
如果你不在 checkInfo() 中使用 e.preventDefault() 你仍然会提交表单
-
你做事的方式,不使用服务器端脚本,数据不会被存储,而是通过表单动作传递到 url。在这种情况下,您的 URL 将类似于 index.html?var1=WhatEverValueTheFormHad。您需要一个脚本(Javascript 或 JQuery)来准备来自查询字符串的值。
-
Nawed Khan,我的 checkInfo 脚本不是在处理数据吗?我知道数据通过 URL,但我不明白为什么当我将其设置为变量时它没有被存储。 Cruiser,变量 e 是什么?我是否在函数调用的顶部使用了阻止默认语句?谢谢。
-
e - 被调用的事件(在本例中为 onclick)。每次加载新页面时,状态都是空白的(就好像您以前从未在该页面上运行过代码一样 - 因为它是一个新页面,即使它位于同一个域中)。这就是为什么要将数据从一个页面传递到另一个页面,您需要使用@P Ackerman 的解决方案之一
标签: javascript html frontend