JS for循环只显示最后一个值(不迭代整个值)

时间:2017-04-14 15:30:39

标签: javascript

function addmsg(type, msg) {
    if (type = 'new') {
        $('#ntfcn').html(type);
        var notify = ["New Message", "New Mail", "New Event", "New Assignment"];
        var i;
        for (i = 0; i < notify.length; i++) {
            $('#ntfcn_msg').html("<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + notify[i] + "</h6></div></a>");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

此行会覆盖每次循环迭代中ntfcn_msg元素中的内容:

$('#ntfcn_msg').html("<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + notify[i] + "</h6></div></a>");

你的意思是追加

$('#ntfcn_msg').append("<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + notify[i] + "</h6></div></a>");
// -------------^

...也许在循环前面有一个empty来清除它:

$('#ntfcn_msg').empty();

所以:

function addmsg(type, msg) {
    if (type == 'new') {
        $('#ntfcn').html(type);
        var notify = ["New Message", "New Mail", "New Event", "New Assignment"];
        var i;
        $('#ntfcn_msg').empty();
        for (i = 0; i < notify.length; i++) {
            $('#ntfcn_msg').append("<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + notify[i] + "</h6></div></a>");
        }
    }
}

另一种选择是使用Array#mapjoin,然后使用html

function addmsg(type, msg) {
    if (type == 'new') {
        $('#ntfcn').html(type);
        $('#ntfcn_msg').html(
            ["New Message", "New Mail", "New Event", "New Assignment"].map(function(text) {
                return "<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + text + "</h6></div></a>";
            }).join("")
        );
    }
}

旁注:id=''没有做任何事情,你也可以将其关闭。

附注2:请参阅Mike C's point了解

if (type = 'new') {

应该是

if (type == 'new') {

if (type === 'new') {

= 分配(将type设置为值'new')。因此,您将type设置为'new',然后测试结果,并且您始终会进入if的正文,因为'new'是一个真正的值。

答案 1 :(得分:0)

使用.append()代替.html()

function addmsg(type, msg) {
        if (type = 'new') {
            $('#ntfcn').html(type);
            var notify = ["New Message", "New Mail", "New Event", "New Assignment"];
            var i;
            for (i = 0; i < notify.length; i++) {
                $('#ntfcn_msg').append("<a href='employee-dashboard.jsp' id='' class='msg_show'><div class='media-body'><h6 class='media-heading'>" + notify[i] + "</h6></div></a>");
            }
        }
    }