jQuery函数多次运行

时间:2019-05-15 19:42:54

标签: javascript jquery

我有一个带有以下代码的html文件:

<script>
    $(function () {
        $("#RadniNalog").click(function () {

            $("#AdminContent").html();
            $("#AdminContent").append("<button class='btn1'>Novi nalog</button><br><br>");
            $.ajax({
                type: "GET",
                url: "/RadniNalog/Lista",
                contentType: "application.json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var htmlToAppend;
                    $("#RadniNalog").addClass("activated");
                    htmlToAppend += "<table>";
                    htmlToAppend += "<tr><th>Broj naloga</th></tr>";
                    $.each(data, function (index, item) {
                        htmlToAppend += "<tr><td>" + data[index].brDok + "</td></tr>";
                    });

                    htmlToAppend += "</table>";
                    $("#AdminContent").append(htmlToAppend);
                },
                error: function () {
                    alert("error");
                }
            });
        });
    });
</script>

该文件中的其他内容只有div #AdminContent和按钮#RadniNalog

我从API获取数据,并构建了需要附加在页面上的字符串。问题是我的页面出现了

undefined
<table>
//everything else it needs to

因此,您可以看到问题是undefined的一部分。我尝试跟踪它何时发生以及何时在我向我的div append时发生。后来我怀疑是在each循环上,所以我将其删除,并再次显示undefined并在其后为空表。

那为什么要附加undefined?出于某种原因,它两次运行了此功能。

编辑:我已经声明了var htmlToAppend = "Something",而不是undefined它显示了Something,但是为什么呢?

2 个答案:

答案 0 :(得分:0)

更改此行:

var htmlToAppend;

对此:

var htmlToAppend = "";

这就是为什么在第一次追加之后它将包含初始值(为空字符串)的原因。 (不是您的示例中未定义的内容或“东西”)

答案 1 :(得分:-1)

var htmlToAppend =“”;

创建var时需要分配空字符串。以后,您可以使用运算符“ + =”。它将文本添加到var htmlToAppend的现有内容中。