使用javascript将数据存储在数组throw循环中

时间:2014-12-03 06:34:32

标签: javascript

我想创建一个脚本来生成具有以下规范的html。

  1. 班级名称字段是必填字段。
  2. 根据类变量字段的值生成数据类型和变量名称字段的数量。
  3. 根据函数字段的值生成返回类型的数量,函数名称和 参数字段。
  4. 根据参数字段的值生成数据类型和变量名称字段的数量。
  5. 函数名称和变量名称必须以字母开头。
  6. 当用户点击Generate代码时显示输出。
  7. 数据类型/返回类型组合框值应为int,float,double和void。
  8. 返回类型组合框值应为int,float,double和void。
  9. 这是我的代码

    
    
            function change() {
                var txt = ""
                var txt2 = ""
                var m = document.getElementById("m")
                var f = document.getElementById("f")
                var t1 = document.getElementById("Text2").value
               
                var array = new Array()
                txt2 += "Class " + t3 + "<br /> {"
                
                
                if (t1 == 0) {
                    txt += ""
                }
                else {
                    
                    for (var a = 0; a < t1; a++){
    
                        for (var i = 0; i < t1-1; i++) {
                            txt += "Data type <select id='" + i + "'>"
                            txt += "<option value='INT'> int  </option>"
                            txt += "<option value='FLOOT'> floot  </option>"
                            txt += "<option value='VOID'> void  </option>"
                            txt += "<option value='DOUBLE'> double  </option>"
                            txt += "</select> &nbsp;&nbsp;"
                            
                            
                            for (var n = 0; n < i; n++) {
                                document.write(array[n] + "<br>");
                                
                            }
                            
    
                            
                        }
    
                        txt += "Variable name <input type='text' id='" + a + "' /> <br />"
                        m.innerHTML = txt
                        txt2 += "&nbsp;" + document.getElementById(a).value 
                        txt2 += "&nbsp;&nbsp;&nbsp;&nbsp;" + document.getElementById(i)
                    }
                   
                    
                }
               
                f.innerHTML = txt2
    
                
            }
    
        </script>
    &#13;
     
    
    Enter Class Name <input id="Text1" type="text" /> <br /><br />
    
        Enter Number of Class variables <input id="Text2" type="text" onchange="change()" /> <br /> <br />
        <h5 id="m"> </h5>
        Enter Number of Functions <input id="Text3" type="text" onchange="change()" /> <br />
        <br /><br />
    
        <h5 id="f"> </h5>
    
        <input id="Button1" type="button" value="button" onclick="change()" />
    &#13;
    &#13;
    &#13;

1 个答案:

答案 0 :(得分:0)

如果检查控制台,则会发现错误:“t3未定义”。这是因为您从未定义过t3。如果我在函数顶部附近放置以下内容,它可以工作(最多一点):

var t3 = document.getElementById("Text1").value;

它最终会破裂,因为你有更多的问题。首先,你的array没有打印的一个重要原因是因为你从未定义过它的内容。

请注意,任何人都可以阅读代码,其中变量t1是元素Text2的内容,t3内容Text2,其中a循环计数器是ain。考虑将变量名称更改为classNamemethodCountvariableCount等。现在对我来说这是地狱,我保证在一周左右对你来说也是地狱,如果它还没有。

另外,请注意document.write是一种非常危险和破坏性的力量。只有在绝对必要的时候才使用它,即便再考虑三次。使用element.innerHTML = ...element.appendChild(...)document.createElement(...)一起使用。第一种方法更容易,它几乎总是比document.write更好,更可控。我发现你已经在使用innerHTML了,所以这应该不难。将document.write视为具有放射性:如果你绝对 要触摸它,那就要聪明,并穿上生物危害服。

最后,你的循环不能做你想做的事情,甚至不能做到。正如我所说,由于无意义的变量名称和奇怪的限制,很难在那里遵循你的逻辑。您会发现,当您为变量提供更好的名称时,您将清楚地了解您的程序实际执行的操作。

最后,一个愚蠢的观察:“floot”不是一个字,我有理由相信你想把“漂浮”放在那里。