函数在javascript中不起作用
我的代码有问题。 没有发生任何事情函数f和g没有被调用,我只想把数组传递到一个函数中,并用它做一些事情:函数在javascript中不起作用,javascript,Javascript,我的代码有问题。 没有发生任何事情函数f和g没有被调用,我只想把数组传递到一个函数中,并用它做一些事情: <html> <head> <title>test</title> </head> <body> <script lang="JavaScript" type="text/javascript"> // l = prompt("Your nam
<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>
测试
//l=提示(“您的姓名:”;//如果我删除了评论,它会起作用
函数f(E){
l=提示(“您的姓名:”);
E[“名称”]=l;
l=提示(“您的年龄:”);
E[“年龄”]=l;
l=提示(“您的注释:”);
E[“注”]=l;
}
//l=提示(“您的姓名:”;//如果我删除了评论,它会起作用
职能g(E){
for(在E中为ind){
文件。写入(“E[“+ind+”]=“+E[ind]);
}
}
E=新阵列(3);
//l=提示(“您的姓名:”;//在这里,如果我删除评论,什么也不会发生
f(E);
g(E);
你根本不想要数组,你想要的是对象。可以使用对象初始值设定项创建对象:
E = {};
旁注1:你的代码到处都是牺牲品。你需要声明你的变量
旁注2;使用
document.write
在页面的主解析完成后(例如,在提示符之后)将隐式调用document.open
,这将完全擦除页面。如果要添加到页面,请使用DOM
下面是一个示例,其中清理了代码中的各种问题,包括变量命名和函数命名-有意义的名称对您很有用,对试图帮助您的人也很有用:
函数getData(){
变量数据={};
data.Name=prompt(“您的名字:”);
data.Age=提示(“您的年龄:”;
data.Note=prompt(“您的注释:”);
返回数据;
}
函数showData(数据){
for(var输入数据){
显示(“E[“+键+”]=“+数据[键]);
}
}
功能显示(msg){
var p=document.createElement('p');
p、 innerHTML=msg;
文件.正文.附件(p);
}
var d=getData();
showData(d)代码>使用新数组(3)
而不是新数组(3)
:
测试
//l=提示(“您的姓名:”;//如果我删除了评论,它会起作用
函数f(E){
l=提示(“您的姓名:”);
E[“名称”]=l;
l=提示(“您的年龄:”);
E[“年龄”]=l;
l=提示(“您的注释:”);
E[“注”]=l;
}
//l=提示(“您的姓名:”;//如果我删除了评论,它会起作用
职能g(E){
for(在E中为ind){
文件。写入(“E[“+ind+”]=“+E[ind]);
}
}
E=新阵列(3);
//l=提示(“您的姓名:”;//在这里,如果我删除评论,什么也不会发生
f(E);
g(E);
建议:
首先它应该是E=新数组(3);
因为E是一个全局变量(在第一个函数中使用),所以最好在第一个函数之前声明它。
虽然这不是必需的,但为每个提示指定自己的变量名将有助于调试 您的代码正在使用一个名为newarray
的函数,该函数在您显示的代码中没有定义。如果您在web控制台中查看,您将看到一条漂亮、清晰的错误消息,指向失败的行。“什么也不发生”不太正确(语法上也是如此;-)-代码中有一个错误阻止了进一步执行。您应该查看JS控制台(根据浏览器的不同访问方式)以查看错误消息……但OP实际上根本不需要数组,也没有任何理由在不用于存储索引0、1或2的任何内容时将其长度设为3。请告诉我为什么不能使用document.write?@cip:i:“使用document.write
…将隐式调用document.open
,这将完全擦除您的页面…”通过“擦除”“我的意思是它将删除页面上的所有内容并替换它。我想你的当前页面没有任何内容,所以这没问题,但一般来说文档。在主解析完成后编写是不允许的(有些人认为它总是不允许的)