功能不适用于javascript

时间:2015-06-20 15:41:55

标签: javascript

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

3 个答案:

答案 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是一个全局变量(并在第一个函数中使用),因此最好在第一个函数之前声明它。 虽然没有必要,但通过调试为每个提示提供自己的变量名称会很有帮助。