Javascript for循环不按顺序

时间:2015-12-08 00:05:14

标签: javascript jquery for-loop

我有一个令人困惑的问题,我的函数中的一行代码在上面说明的循环之前运行。在我的HTML中,我有:

<textarea id="textBox"></textarea>
<button id="submitButton" onclick="parseData()">submit</button>
<div id="put"></div>

我的JS功能是:

function parseData() {
    var data = $("#textBox").val();
    var tab = /\t/;
    data = data.split(tab);
    $("#put").html($("#put").html() + "<table>");
    for (var i = 0; i < data.length; i++) {
        $("#put").html($("#put").html() + "<tr>"+data[i]+"</tr>");
    };
    $("#put").html($("#put").html() + "</table>");
    return;
};

$("#put")中生成的html是:

<table></table>
"SiO2 (%)Al2O3 (%)TiO2 (%)CaO2 (%)MgO2 (%) 8.21.25.31.51.8 45.32.52.60.210.5 65.23.48.70.0662.3 20.11.85.42.540.2 18.91.12.34.810.7"

我不确定为什么在</table>循环运行之前放置最终for,我不确定为什么<tr>标签没有添加到class Program { public static void Main(string[] args) { // Only RUN the task as needed. FooGet // still allows you to generalize your task. Task.Run(() => { dynamic value = FooGet(); value.RunSynchronously(); Console.WriteLine(value.Result.Result.ToString()); }); while (true) Thread.Sleep(100); } private static Task<object> FooGet() { var task = new Task<object>(() => { return asyncBar(); }); return task; } private async static Task<object> asyncBar() { // do work! return "Hello, world!"; } } 循环中for循环。有什么指针吗?

2 个答案:

答案 0 :(得分:4)

jQuery会在插入时自动关闭标记。试试这个。

function parseData() {
    var data = $("#textBox").val();
    var tab = /\t/;
    var put_html = $("#put").html() + "<table>";
    data = data.split(tab);
    for (var i = 0; i < data.length; i++) {
        put_html += "<tr>"+data[i]+"</tr>";
    };
    put_html += '</table>';
    $("#put").html(put_html);
    return;
};

但是,我注意到您没有使用<td>元素。你可能也想研究一下。

答案 1 :(得分:2)

每次将内容添加到html()属性中,而不是构建整个内容并添加内容。

由于您使用的是jQuery,因此可以使用jQuery绑定事件,而不是直接在HTML中添加

<textarea id="textBox"></textarea>
<button id="submitButton">submit</button>
<div id="put"></div>

$(function(){
    $("#submitButton").click(function(){
        parseData();
    });

    function parseData() {
        var data = $("#textBox").val();
        var tab = /\t/;
        data = data.split(tab);

        // Build your html
        $("#put").html('htmlstructure');
        return;
    }
});

此外,您可以查找类似于连接数组中字符串的类似内容,这样每次附加时都不会创建字符串等号,因为字符串是不可变的。

Good example