更改哪个元素增加JavaScript
Change Which Element Increment JavaScript
用JavaScript创建一个排行榜,可以立即更新到MongoDB。为了增加某人在排行榜上的得分,你点击相应的<div>
,他们的得分就会增加5分。
这是通过使用这个功能来完成的
Template.leaderboard.events({
'click div.inc': function () {
Players.update(Session.get("selected_player"), {$inc: {score: 5}});
}
});
我希望用户只更新一个播放器,但允许更改。例如,如果用户选择"John Smith",则"John Smith"应该只能增加5点。除此之外,如果用户决定将分数给予"Janie Smith","John Smith"将失去5分,"Janie史密斯"将获得分数。
最好的方法是什么?我可以通过计算前面的"selected_div"来完成这项操作吗?
将Template.leaderboard.events
替换为:
Template.player.events({
click: function() {
// only continue if this was not the last player clicked
if (!this.isLast) {
// find the last player clicked
var lastPlayerClicked = Players.findOne({isLast: true});
// remove the isLast marker from the previously clicked player and
// decrement her score
if (lastPlayerClicked) {
var modifier = {$inc: {score: -5}, $unset: {isLast: ''}}
Players.update(lastPlayerClicked._id, modifier);
}
// update this player with a new score and mark her as last
Players.update(this._id, {$inc: {score: 5}, $set: {isLast: true}});
}
}
});
它通过设置或删除isLast
来跟踪最后点击的播放器,然后根据需要修改当前和最后一个播放器。在添加之前,您可能希望通过运行meteor reset
来确保您有一个干净的数据库。
我认为您需要将最新的玩家添加到数据库中:
Template.leaderboard.events({
'click input.div': function () {
var player = Session.get("selected_player");
var currentPlayer = Players.find(player);
var recentlyChanged = Players.find({changed: true});
if(recentlyChanged === currentPlayer) {
Players.update(player, {$inc: {score: 5}});
} else {
Meteor.call('newScore', recentlyChanged, player);
}
}
});
if (Meteor.isServer) {
Meteor.methods({
newScore: function(recentlyChanged, player) {
if(recentlyChanged) {
Players.update(recentlyChanged, {$inc: {score: -5}});
}
Players.update({}, {changed: false}, {multi: true});
Players.update(player, {changed: true}, {$inc: {score: 5}});
}
});
}
相关文章:
- JavaScript:单击时相对于父级增加变量值
- 在SoundCloud中,使用JavaScript SDK流式传输曲目是否会增加该曲目的playback_count
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 函数比javascript中的步进器增加/减少更多
- javascript函数,它将数组作为输入,将每个数组元素增加1,并返回增加值的新数组
- Mscrm 2011仪表板通过JavaScript或插件增加行数
- 使用JavaScript增加上/左/下/右值
- 计算数组中的数据数量并增加javascript
- 如何使用用户定义的值来增加Javascript中的值
- 如何通过宽松来增加javascript循环延迟
- 如何从Mailchimp增加JavaScript弹出窗口的上边距
- 如何增加JavaScript变量与onclick和包围JavaScript数组
- 更改哪个元素增加JavaScript
- 增加JavaScript settimeout函数
- 单调地增加JavaScript中的时间
- 如何增加JavaScript变量名
- 增加Javascript鼠标事件
- 创建新对象时,Hangman-Timer 速度增加 (JavaScript)
- 动态增加Javascript对象成员
- 如何在一个函数中增加JavaScript getElementById变量