我目前根据存储在数组中的调用次数将值附加到表中。
我的问题是它与新的值一起打印掉以前的值。我已经尝试了一些事情,它只是没有发生在我身上。即使让它实时取出价值也会起作用我觉得但还没有快乐,因为目前它只会显示重新加载页面的价值。< / 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。
答案 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!
}