我的代码出现问题。 没有任何事情发生,函数f和g没有被调用,我只是想将数组传递给一个函数并用它做一些事情:
<html>
<head>
<title>test</title>
</head>
<body>
<script lang="JavaScript" type="text/javascript">
// l = prompt("Your name :"); // if i remove the comment it works
function f(E) {
l = prompt("Your name :");
E["Name"] = l;
l = prompt("Your Age :");
E["Age"] = l;
l = prompt("Your Note :");
E["Note"] = l;
}
// l = prompt("Your name :"); // if i remove the comment it works
function g(E) {
for (ind in E) {
document.write("E[" + ind + "]=" + E[ind]);
}
}
E = newarray(3);
//l = prompt("Your name :"); // here if i remove the comment nothing happen
f(E);
g(E);
</script>
</body>
</html>
答案 0 :(得分:1)
你根本不想要一个数组,你想要一个对象。您可以使用对象初始值设定项创建对象:
E = {};
附注1:您的代码在整个地方成为The Horror of Implicit Globals的牺牲品。你需要声明你的变量。
旁注2;在主页解析完成后使用document.write
(例如,在prompt
之后)将隐式调用document.open
,这将完全消除您的页面。如果要添加到页面,请使用DOM。
以下是清理代码中各种问题的示例,包括变量命名和函数命名 - 有意义的名称对您有用,对于试图帮助您的人有用:
function getData() {
var data = {};
data.Name = prompt("Your name :");
data.Age = prompt("Your Age :");
data.Note = prompt("Your Note :");
return data;
}
function showData(data) {
for (var key in data) {
display("E[" + key + "]=" + data[key]);
}
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
var d = getData();
showData(d);
答案 1 :(得分:0)
使用new Array(3)
代替newarray(3)
:
<html>
<head>
<title>test</title>
</head>
<body>
<script lang="JavaScript" type="text/javascript">
// l = prompt("Your name :"); // if i remove the comment it works
function f(E) {
l = prompt("Your name :");
E["Name"] = l;
l = prompt("Your Age :");
E["Age"] = l;
l = prompt("Your Note :");
E["Note"] = l;
}
// l = prompt("Your name :"); // if i remove the comment it works
function g(E) {
for (ind in E) {
document.write("E[" + ind + "]=" + E[ind]);
}
}
E = new Array(3);
//l = prompt("Your name :"); // here if i remove the comment nothing happen
f(E);
g(E);
</script>
</body>
</html>
这里你想要使用object而不是array。
<html>
<head>
<title>test</title>
</head>
<body>
<script lang="JavaScript" type="text/javascript">
// l = prompt("Your name :"); // if i remove the comment it works
function f(E) {
E["Name"] = prompt("Your name :");
E["Age"] = prompt("Your Age :");
E["Note"] = prompt("Your Note :");
}
// l = prompt("Your name :"); // if i remove the comment it works
function g(E) {
for (ind in E) {
document.write("E[" + ind + "]=" + E[ind]);
}
}
var E = {};
//l = prompt("Your name :"); // here if i remove the comment nothing happen
f(E);
g(E);
</script>
</body>
</html>
答案 2 :(得分:0)
建议:
首先它应该是E = new Array(3); 由于E是一个全局变量(并在第一个函数中使用),因此最好在第一个函数之前声明它。 虽然没有必要,但通过调试为每个提示提供自己的变量名称会很有帮助。