我希望在警告中打印字典(可能?)或使用id=p
在第三个textarea(三个)中打印。
我在this question上阅读并使用了
document.getElementById("p").value=JSON.stringify(a);;
alert("myObject is " + a.toSource());
console.log(a);
这些不起作用。 例子是:
<!DOCTYPE HTML>
<html>
<head>
<title>Example - print the dict</title>
</head>
<body>
<input id = 'button1' type = 'button' value = 'print the dict' onclick="updateHistory()"/>
<script type = 'text/javascript'>
var count ="?foo=1&oo=298529982";
function updateHistory()
{
var a = new Array();
for (var i = 0; i < document.formparam.elements.length; i++)
{
var field = document.formparam.elements[i];
a[field.name] = field.value;
}
document.getElementById("p").value=JSON.stringify(a);;
alert("myObject is " + a.toSource());
console.log(a);
}
</script>
<form method="GET" name="formparam" id="formparam" ><table><tr><td><textarea name="name" >john</textarea></td><td><textarea name="surname">jackold</textarea></td></tr></table></form>
<textarea id="p"></textarea>
</body>
</html>
答案 0 :(得分:3)
在数组上使用JSON.stringify()
将迭代数组,如下所示:
for (var i = 0; i < a.length; ++i) {
// process value of a[i]
}
但是因为您使用a[field.name]
向对象添加属性,所以不会将这些属性添加到数组项列表中,这与a.push(value)
不同。因此,JSON.stringify()
将打印[]
。
你应该:
将a
定义为对象,即var a = {};
自己迭代键:
for (var k in a) {
if (a.hasOwnProperty(k)) {
// process value of a[k]
}
}
答案 1 :(得分:2)
var a = new Array();
应该是
var a = {};
或var a = new Object();
JavaScript中没有dictonnaries,但是,您可以将对象用作键/值存储。要将object
警告为JSON,您只需执行alert(JSON.stringify(a));
。