动态创建/创建变量's字典并打印

Create/ creating the variable's dict dynamically and print

本文关键字:创建 字典 打印 变量 动态      更新时间:2023-09-26

我想在alert中打印字典a,(这是可能的吗?)或者在第三个文本区域(3)中使用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>

在数组上使用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]
        }
    }
    

var a = new Array();

应该

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

JavaScript中没有字典,但是,您可以使用对象作为键/值存储。要将object通知为JSON,只需执行alert(JSON.stringify(a));