Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数在javascript中不起作用_Javascript - Fatal编程技术网

函数在javascript中不起作用

函数在javascript中不起作用,javascript,Javascript,我的代码有问题。 没有发生任何事情函数f和g没有被调用,我只想把数组传递到一个函数中,并用它做一些事情: <html> <head> <title>test</title> </head> <body> <script lang="JavaScript" type="text/javascript"> // l = prompt("Your nam

我的代码有问题。 没有发生任何事情函数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>

测试
//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
,这将完全擦除您的页面…”通过“擦除”“我的意思是它将删除页面上的所有内容并替换它。我想你的当前页面没有任何内容,所以这没问题,但一般来说
文档。在主解析完成后编写
是不允许的(有些人认为它总是不允许的)