动态创建/创建变量的dict并打印

时间:2013-04-16 01:39:45

标签: javascript

我希望在警告中打印字典(可能?)或使用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>

2 个答案:

答案 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()将打印[]

你应该:

  1. a定义为对象,即var a = {};

  2. 自己迭代键:

    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));