使用javascript在html中插入<input />标签的问题

时间:2010-10-21 21:46:31

标签: javascript

我正在尝试获取数组中的文本(每个值一个单词)并将其插入到html中。所有代码都在这里:http://jsfiddle.net/chromedude/r6wVq/3/

更新: 我的问题是我做错了什么?它没有做任何奇怪的事情。

对于每个想知道这段代码应该帮我做什么的人来说,都要记住学校的长篇文章。

3 个答案:

答案 0 :(得分:4)

你有一个无限循环,这就是浏览器崩溃的原因:

for (i = 0; i < text.length; i++) {
    var currentText = text[i];
    for (i = 0; i<blanks.length; i++){}
}

第二个循环始终将计数器变量i重置为0。如果您有嵌套循环,则必须使用不同的变量。并使用var将变量声明为local,例如

for (var i = 0; i < text.length; i++) {
    var currentText = text[i];
    for ( var j = 0; j<blanks.length; j++){
    }
}

最外层的for循环相同!


我不知道你想用代码完成什么,但这里有一些评论:

var blankNum = Math.random(Math.floor() * (text.length / 2));

Math.random没有参数,但Math.floor没有。

for (i = 0; i < blanks.length; i++) {

blanks此时仍为空,因此循环永远不会运行。

if (currentText==blanks[i]){

您确定blanks[i]会包含文字吗?前面提到的(从不运行)循环似乎在数组中添加了数字。

 textPrelim = <input type="text"></input>

这里出现语法错误,您必须将字符串括在引号中。

答案 1 :(得分:3)

我修复了你的小提琴:http://jsfiddle.net/yEKPt/1/

出了什么问题:

  1. 用于迭代器范围(here
  2. 这一行(27)引发了语法错误:

    textPrelim = <input type="text"></input> //Needs to be quoted.
    

    应该是:

    textPrelim = '<input type="text"></input>'; //Quoted.
    
  3. 您反转了Math.random和Math.floor(第8,14行)。 (参见:Math.Random()Math.Floor()

    var blank = Math.random(Math.floor() * (text.length / 2));
    
  4. 查看我的修订版。我认为它能实现你想要的东西吗?

答案 2 :(得分:1)

除了Felix的答案之外,请尝试检查http://www.jslint.com处的代码是否存在语法错误和未声明(隐式全局)变量。