而在.innerHTML中声明

时间:2015-06-09 20:45:26

标签: javascript html

我有这段代码。

<script>
   $(document).ready(function(){
       $( window ).resize(function() {
          if($(document).width() < 620){            
               $(".flexy-menu").flexymenu({
                      speed: 400,type: "vertical", indicator: false
               });    
           }
        });
    });
 </script>

我想要的while语句是为表创建行(&#34;&#34;东西)。

我的方法是否可行,还是应该尝试其他方式?

谢谢!

3 个答案:

答案 0 :(得分:1)

while语句不会解析为某个值,您不能将它们放在表达式的中间。

请考虑以下事项:

document.getElementById("stage").innerHTML = "<table>";

while (c<b) {  
  document.getElementById("stage").innerHTML += c++;
}

document.getElementById("stage").innerHTML += "</table>"

答案 1 :(得分:0)

while循环是一个语句,而不是表达式。 您可以将表达式放在语句中,并且可以将表达式放在其他表达式中,但是您不能在表达式中放置语句。

然而,您可以使用数组来存储您在循环中所做的任何事情的结果,然后在最后将它们连接在一起,如下所示:

var result = [],
    r;
while (c < b) {
    r = /* do something */;
    result.push(r);
    c++;
}
document.getElementById("stage").innerHTML = "<table>" + result.join('') + "</table>";

result.join('')是一个表达式,因此它适合您尝试编写的内容。

答案 2 :(得分:0)

我可能会这样做:

    var html = '<table>';
    // make sure b and c are initialized somehow
    while(c < b)
    {
        // start new row
        html+= '<tr>';
        // add cells
        html+= '<td>' + 'a cell' + '</td>';
        html+= '<td>' + 'another cell' + '</td>';
        // end row
        html+= '</tr>';

        // iterate your looping variable so you aren't infinite
        c++;
    }
    // end table
    html+= '</table>';
    $('#stage').html(html);

每次通过while都会向表中添加一行新数据。

通常最好创建一个包含所有html的字符串变量,然后将其全部添加到DOM中。这要快得多,因为您只需操作DOM一次而不是多次操作。