如何仅在一次数组中追加值

时间:2015-10-08 09:41:52

标签: javascript jquery arrays express socket.io

我目前根据存储在数组中的调用次数将值附加到表中。

我的问题是它与新的值一起打印掉以前的值。我已经尝试了一些事情,它只是没有发生在我身上。即使让它实时取出价值也会起作用我觉得但还没有快乐,因为目前它只会显示重新加载页面的价值。< / p>

关于我的问题的简要介绍E.G: 1数组中的值:工作正常。 2值将先前的值和新的值添加到同一个框中,其余值相应地起作用。

任何想法?

test.js

在我追加数组中找到的数据时,ave在for循环乐观之内和之外尝试它会停止多次附加值。

jQuery(function ($) {
    var socket = io.connect();
    var $sip = $('#sip');
    socket.on('sip', function (data) {
        var sip = '';
        for (i = 0; i < data.length; i++) {
            sip += data[i]
        if(sip){
        $sip.append('<tr>\
                                    <td>' + sip + '</td>\
                                    <td><input type="checkbox" data-on="Voice" data-off="Muted" checked data-toggle="toggle" data-onstyle="success" data-offstyle="danger"></td>\
                                    <td><button class="btn btn-default kick" id="kick" data-toggle="modal" data-target="#myModal" type="submit">Kick</button></td>\
                                    </tr>');
        }
        else{
            $sip.append('Currently no extensions');
        }
        }

    });
});

app.js

我的ARI客户端和服务器端的东西是,正在访问的数组是调用chanArr,它位于页面的顶部,并通过updateSip函数被调用并在底部发出。

    var chanArr = [];
    var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

 function stasisStart(event, channel) {
          bridge.addChannel({
            channel : channel.id
          }, function (err) {
            var id = chanArr.push(channel.name)
              console.log("User: " + channel.name);
            if (err) {
              throw err;
            }
}

    //Socket.io logic here
    server.listen(3009, function () {
      console.log('listening on *:3009');
    });

    app.use(express.static(__dirname + '/public'));
    app.get('/', function (req, res) {
      res.sendfile(__dirname + "/testPage.html");
    });

    io.sockets.on('connection', function () {
      updateSip();
    });

    function updateSip() {
      io.sockets.emit('sip', chanArr);
    }

testpage.html

id为sip的表主体是附加行的位置。

<html>
    <head>
        <title> Chat with socket.io and node.js</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
                <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.0/css/bootstrap-toggle.min.css" rel="stylesheet">
                    <link href="/css/style.css" rel="stylesheet" type="text/css">   
                    </head>
                    <body>
                        <div class="secondary-bridge">
                            <h3 class="conf-head">Conference call:</h3>
                            <table class="table table-bordered">
                                <thead>
                                    <tr>
                                        <th>Extension</th>
                                        <th>Mute</th>
                                        <th>Kick</th>
                                    </tr>
                                </thead>
                                <tbody id ="sip">
                                </tbody>
                            </table>
                        </div>
                        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
                        <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.0/js/bootstrap-toggle.min.js"></script>
                            <script src="/js/test.js"></script>
                        </body>
                    </html>

编辑:当我使用.append和.html。

.append .append

的.html .html

1 个答案:

答案 0 :(得分:1)

在循环移动到下一次迭代之前,你需要在这种情况下追加它后重置sip的值。

for (i = 0; i < data.length; i++) {
    sip += data[i]
    if(sip){
        $sip.append('<tr>\
                                    <td>' + sip + '</td>\
                                    <td><input type="checkbox" data-on="Voice" data-off="Muted" checked data-toggle="toggle" data-onstyle="success" data-offstyle="danger"></td>\
                                    <td><button class="btn btn-default kick" id="kick" data-toggle="modal" data-target="#myModal" type="submit">Kick</button></td>\
                                    </tr>');
    }
    else{
            $sip.append('Currently no extensions');
        }
   sip = ''; // this is where you reset the variable value!
}