3

我想在 alert 中打印 dict a ,(有可能吗?)或在第三个文本区域(三个)中打印id=p. 我读过这个问题,我用过

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>
4

2 回答 2

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]
        }
    }
    
于 2013-04-16T01:57:03.173 回答
2

var a = new Array();

应该

var a = {};或者var a = new Object();

JavaScript 中没有字典,但是,您可以将对象用作键/值存储。要以 JSON 形式发出警报object,您只需执行alert(JSON.stringify(a));.

于 2013-04-16T01:48:14.340 回答