这个问题的其他答案涉及时间问题,而这个问题涉及在if语句中刷新一部分javascript。
加载HTML页面后,可以看到一个选择元素。根据选择的选项,将显示一组不同的输入字段。
我最初的问题是,当用户重新点击按钮时,我所做的“提交()”功能将重绘相同的输入字段而不是旧的输入字段。您会看到在用户点击“提交”时多次绘制相同的输入字段。
我添加了一个名为checkBool()的函数来检查表单是否已被绘制。如果有,那么它将调用window.location.reload()函数。如果没有,它只会调用我的Submit()函数。
现在代码不再堆积输入字段了。相反,当我第二次点击提交按钮时,即使选择了不同的选项,绘制的表单也会消失。
我想要发生的是当用户选择其他选项并点击提交时,将删除当前表单并自动绘制新的表单集。
这是我的checkBool()函数:
var boolean = new Boolean();
function checkBool(){
if(boolean==false){
Submit();
}else if(boolean==true){
window.location.reload();
boolean=0;
Submit();
return boolean;
}
}
似乎window.location.reload()函数会立即重新加载脚本,浏览器永远不会执行“Submit()”函数。
答案 0 :(得分:3)
我的选择是将不同的形式绘制到不同的div,最初没有显示。选择框或提交按钮的onchange事件循环显示此div,设置.style.visibility =' hidden'或者'可见'取决于这是否是要求的表格。
这也具有可用性优势,即如果用户在开始填写表单后改变主意,稍后改变主意,他的输入仍将存在。
答案 1 :(得分:0)
我找到了问题的答案。
我可以将所有元素一起删除,而不是刷新javascript。这就是我试图找到一种“刷新”页面的方法。
我可以策略性地将元素放在div中并使用removeChild()函数,而不是隐藏元素并在不同的位置留下巨大的空白。
这是一个如何运作的例子......
这是我的HTML:
<button type="button" onclick="draw()">Draw</button>
<button type="button" onclick="erase()">Erase</button>
<div id="parent">
</div>
这是我的javascript:
function draw(){
`docume`nt.getElementById("test").innerHTML=InputField("parent","child","text",5,10).value;
}
function erase(){
var parent =document.getElementById("parent");
var child = document.getElementById("child");
parent.removeChild(child);
}
所以这里发生的是当用户点击按钮“draw”时调用draw()函数。此函数创建一个输入字段。
我创建了自己的函数,它将使用我传递的变量绘制输入字段。这就是InputField()函数的全部内容。
之后,用户点击“擦除”按钮调用擦除功能。
erase函数抓取名为'parent'的父元素和子元素(在本例中称为'child' - 你可以看到我将名称'child'传递给我的InputField()函数)
然后使用代码的remove.Child(子)部分删除子元素。
如果您将jquery下载到您的网页中,您可以使用removeDiv()函数执行相同的操作。