我有一个javascript根据URL做不同的事情.为了工作,我需要有一致的URI.
例如,我需要用户始终打开www.site.com/users/bob/而不是www.site.com/users/bob
不幸的是,节点似乎不支持它.
我尝试重定向
router.get('/:user', function(req, res) {
res.redirect('/users/' + req.params.user' + '/');
});
Run Code Online (Sandbox Code Playgroud)
但它只会导致重定向循环,因为带有和不带斜杠的URL似乎都被视为相同.
我怎样才能做到这一点?谢谢!
我想从WITHOUT斜线路由到斜线.另一个问题的答案解决了另一种方式.我不能.substr(-1)我的网址
我在 domready 之后添加带有套接字消息的新客户端。我想在悬停时展开它们。
在这里阅读一些答案,但没有任何作用。我不知道为什么
我试过
socket.on('newStudentJoined', function studentJoined(msg) {
console.log(msg.student + ' joined the room');
$(document.createElement('div'))
.attr('class', 'studentIcon closed col-md-2 ' + msg.student)
.text(msg.student + ' 4r3 g345t g354 g54 ght65 g45t 3f4 f4 f4 534 g534')
.on('hover', function() {
console.log('hovering');
$(this).toggleClass('closed').toggleClass('open');
})
.appendTo('#joinedClients');
});
Run Code Online (Sandbox Code Playgroud)
和
$('.studentIcon').on('hover', function() {
console.log('hovering');
$(this).toggleClass('closed').toggleClass('open');
});
Run Code Online (Sandbox Code Playgroud)
但甚至连“悬停”控制台日志也没有出来。选择器是正确的,如果我记录它,它会突出显示确切的元素。确保;确定:
<div id="joinedClients" class="row">
<div class="studentIcon closed col-md-2 test">test 4r3 g345t g354 g54 ght65 g45t 3f4 f4 f4 534 g534</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?
有没有办法预加载bootstrap的glyphicons?
我有一个"下一个" - 按钮,按下时显示旋转的"重新加载"字形.
(正常状态text ="Next",按下时加载微调器的更改)
$('button#next').on('click', function nextProblem() {
addSpinner.call($(this));
redirectToNext();
});
function addSpinner() {
if (!$(this).eq(0).hasClass("spinning")) {
$(this).eq(0).html('<span class="glyphicon glyphicon-refresh spinning"></span>');
}
}
Run Code Online (Sandbox Code Playgroud)
但加载需要245毫秒,直到那时,根本没有任何显示.
(它旨在显示重定向需要更长时间的"加载"状态).但是现在,按钮变为空白(对于不超过2xx毫秒的正常重定向)
这不是有史以来最大的交易,但它并不美丽
我怎样才能解决这个问题?
我有一个DB包含数学练习,按难度级别和日期分割.
我想生成一段时间的性能图表.
为了达到这个目的,我遍历查询结果,以及++进行练习的级别和日期的计数器.
例如:2级练习于2015年11月1日进行.
this.levels[2].daysAgo[1].amountTaken++;
有了这个,我可以构建一个图表,其中第0天始终是今天,并且显示了几天的表现.
现在levels []有一个预定义的级别,所以没有问题.但DAYSAGO []是非常动态的(它甚至使用相同的数据每天都在变化),所以如果只有一个运动拍摄,它会徘徊每天的基础上(从是daysAgo[0]对daysAgo[1]等).在daysAgo[]这之间是空的(因为没有条目).
但是为了评估图表,我需要它们具有初始化状态amountTaken: 0,等等.
问题是:我不知道什么时候最古老的运动.
首先收集一种代理对象中的所有条目,其中我有一个var maxDaysAgo保存最旧练习的值,然后daysAgo[maxDaysAgo]在插入实际条目之前初始化一个填充0条目的数组.
这看起来非常笨拙而且过于复杂
只需添加条目this.level[level].daysAgo[daysAgo].amountTaken++;,可能会使daysAgo数组中包含许多undefined键.然后,在添加所有条目之后,我将循环遍历daysAgo键
for (var i = 1; i < this.maxLevel; i++) { // for every level
for (var j = 0; j < this.levels[i].daysAgo.length; j++) {
Run Code Online (Sandbox Code Playgroud)
但daysAgo.length不会计算未定义的字段,是吗?
所以,如果我在[24]只有一个条目,length仍然是1:/
我怎样才能找到数组中的最高键并循环,直到那里存在未定义的键?我怎样才能将所有未定义的密钥添加到最高位置(而不是更多)?
或者:完全解决整个问题会有什么不同,更优雅的方式?
谢谢 :)
我正在制作一个数学应用程序.在那里,我希望能够通过随机操作生成数学任务.
var generator = {
operations: [
"+",
"-",
"*",
"/"
],
randomOperation: function(amount) {
if (amount == 2) {
return this.operations[Math.round(Math.random())];
}
if (amount == 4) {
return this.operations[Math.floor(Math.random() * 4)];
}
},
addOperand: function(operand, maxSize, minSize) {
var op = operand;
console.log('op ' + op);
if (operand == 2||4) {
console.log('getting random operand');
op = this.randomOperation(operand);
}
var number = this.randomNumber(maxSize, minSize);
console.log('number ' + number);
this.tasks.push({
value: number,
operation: op
});
console.log('added ' + op + ' …Run Code Online (Sandbox Code Playgroud) javascript ×5
jquery ×2
arrays ×1
css ×1
glyphicons ×1
html ×1
node.js ×1
operators ×1
redirect ×1