我想创建一个脚本来生成具有以下规范的html。
这是我的代码
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> "
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 += " " + document.getElementById(a).value
txt2 += " " + 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;
答案 0 :(得分:0)
如果检查控制台,则会发现错误:“t3未定义”。这是因为您从未定义过t3
。如果我在函数顶部附近放置以下内容,它可以工作(最多一点):
var t3 = document.getElementById("Text1").value;
它最终会破裂,因为你有更多的问题。首先,你的array
没有打印的一个重要原因是因为你从未定义过它的内容。
请注意,任何人都可以阅读代码,其中变量t1
是元素Text2
的内容,t3
内容Text2
,其中a循环计数器是a
,i
和n
。考虑将变量名称更改为className
,methodCount
,variableCount
等。现在对我来说这是地狱,我保证在一周左右对你来说也是地狱,如果它还没有。
另外,请注意document.write
是一种非常危险和破坏性的力量。只有在绝对必要的时候才使用它,即便再考虑三次。使用element.innerHTML = ...
或element.appendChild(...)
与document.createElement(...)
一起使用。第一种方法更容易,它几乎总是比document.write
更好,更可控。我发现你已经在使用innerHTML
了,所以这应该不难。将document.write
视为具有放射性:如果你绝对 要触摸它,那就要聪明,并穿上生物危害服。
最后,你的循环不能做你想做的事情,甚至不能做到。正如我所说,由于无意义的变量名称和奇怪的限制,很难在那里遵循你的逻辑。您会发现,当您为变量提供更好的名称时,您将清楚地了解您的程序实际执行的操作。
最后,一个愚蠢的观察:“floot”不是一个字,我有理由相信你想把“漂浮”放在那里。