我目前正致力于Google表单的解决方法,该解决方案能够将所有输入存储在Cookie中,以便用户可以在不同的时间进行调查。
目前我能够存储所有问题(问题是一个对象,包含:使用func setCheckMarkView() {
checkMarkView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(checkMarkView)
self.addConstraints([
NSLayoutConstraint(item: checkMarkView, attribute: .CenterY, relatedBy: .Equal, toItem: self, attribute: .CenterY, multiplier: CGFloat(1), constant: CGFloat(0)),
NSLayoutConstraint(item: checkMarkView, attribute: .Trailing, relatedBy: .Equal, toItem: self, attribute: .Trailing, multiplier: CGFloat(1), constant: -UIStyle.Size.standardHorizontalSpacing)
])
}
在cookie中包含的周围div的id,user,userinput。我还能够读取和解析cookie给我一个所有问题对象的数组。
现在我想填写所有字段或检查所有具有值的单选按钮。 我的问题是,内部for循环只进行了2次迭代,但它应该执行18次。你知道什么是错误的吗?
JSON.stringify()
答案 0 :(得分:0)
我找到了解决方案。问题是我忘了for循环,因为var x = document.getElementById(answer[j].n).getElementsByTagName('input');
可能会返回多个元素。所以这是解决方案:
function restoreInputs() {
// number of stored cookies
var countCookies = 27;
console.log(countCookies);
// iterate through all cookies
for (var i = 1; i < countCookies + 1; i++) {
var cookiename = "answer" + i;
// get content of cookie (is array of objects)
var answer = checkCookie(cookiename);
// iterate through content
for (var j = 0; j < answer.length; j++) {
// get value of object
var val = answer[j].value;
// get the input field (textarea or radio button)
var x = document.getElementById(answer[j].n).getElementsByTagName('input');
// if input is radio, then check the one at position stored in value of object
for (var k = 0; k < x.length; k++) {
if (x[k].type === "radio") {
x[val].checked = true;
// if textarea set its value to the one stored in object value
} else {
x[k].value = val;
}
}
console.log("j: " + j);
}
}
console.log(i);
}