我想在控制台中执行此代码,我想要做的是更改几个字段的值并继续提交。
var animal = new Array(); //Declare Array
animal[0] = 'cat';
animal[1] = 'dog';
animal[2] = 'cow';
animal[3] = 'snake';
animal[4] = 'goat';
animal[5] = 'tiger';
animal[6] = 'lion';
animal[7] = 'horse';
var createFunc = function(i){
return function(){
var token_field = document.getElementById('animal_name');
token_field.value = animal[i]; //Change the value of the field with each array value
var path_field = document.getElementById('To_do');
path_field.value='feed'; // Change the other field with 'feed'
var submit_all = document.getElementById('graph_submit');
submit_all.click(); //submit the form
};
};
for (var i = 0; token.length > i; i++) {
setTimeout(createFunc(i), 2000);
}
但是当单击该按钮时,页面将被重新加载并循环中断...因此,只有第一个值被提交而其他值仍然存在。
第一次提交后(将在2秒以上进行),停止执行提交页面的代码。由于POST查询,页面将重新加载。但我希望提交所有值,但重新加载页面。
我该怎么办?
答案 0 :(得分:0)
有可能点击'graph_submit'范围会发生变化并且循环中断。
您可以在此处使用防止默认功能。
答案 1 :(得分:0)
我完全不知道你的代码。但是对于第一眼看,我猜你可以创建页面提交队列。
第一次提交后(将在2秒以上进行),停止执行提交页面的代码。由于POST查询,页面将重新加载。
编辑:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-2.1.0.min.js"></script>
</head>
<body>
<script>
var animals = new Array();
animals[0] = 'cat';
animals[1] = 'dog';
animals[2] = 'cow';
animals[3] = 'snake';
animals[4] = 'goat';
animals[5] = 'tiger';
animals[6] = 'lion';
animals[7] = 'horse';
$(document).ready(function () {
$('#q').attr('value', JSON.stringify(animals));
$('#ajax').click(function () {
$.post("/", JSON.stringify(animals));
});
});
</script>
<form id="main" action="http://www.google.com/search">
<input id="q" name="q" type="hidden" value="" />
<input id="submit" type="submit" value="Using submit" />
<input id="ajax" type="button" value="Using ajax" />
</form>
</body>
</html>
“使用ajax”发布数据,您可以查看firebug。它会是一样的。
[ “猫”, “狗”, “牛”, “蛇”, “山羊”, “虎”, “狮子”, “马”]
我认为您需要阅读HTML表单,ajax请求和HTTP方法的一些基础知识。
答案 2 :(得分:0)
确定。这里需要更多的澄清。你为什么要使用setTimeout?因为在每个循环中你只发送i。一个是你的循环,另一个是setTimeOut,它会产生冲突。
所以这是一些建议:
如果您必须在每2秒后提交表单,则删除for循环并仅使用setTimeOut。并且为了将'i'传递给createFunc,您可以使用一个计数器。例如:
setTimeout(
function(){
var i =0;
createFunc(i);
i++;
} , 2000);
请不要同时使用两者。也许这将有用而且清晰。