我已经学习了几个星期的javascript,而且我现在已经相对不错了,但是我已经陷入了"最佳做法&#34 ;它的一面。
例如,这个追加();功能。我怎么能写得更好呢?
var backgroundMusicPlayer = AVAudioPlayer()
var speaker = SKSpriteNode(imageNamed: "speaker")
var nospeaker = SKSpriteNode (imageNamed: "nospeaker")
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
if self.nodeAtPoint(location) == self.speaker{
backgroundMusicPlayer.pause()
self.nospeaker.anchorPoint = CGPointMake(0, 0.5)
self.nospeaker.position = CGPointMake(CGRectGetMinX(self.frame) + self.speaker.size.width / 3, CGRectGetMaxY(self.frame) - self.speaker.size.height * 4)
self.addChild(nospeaker)
}
if self.nodeAtPoint(location) == self.nospeaker{
backgroundMusicPlayer.play()
}
}
}
我知道这是有效的,但我也知道必须有不同的更好的方法来写这个。我只是不知道它是什么:)
任何帮助/解释都会受到大力赞赏!
提前致谢
答案 0 :(得分:2)
您可以使用for
循环:
var swatches = $("#swatches");
for(var i = 0; i <= 8; i++) {
swatches.append('<div class="swatch" style="background-color:rgb('+cp[i][0]+','+cp[i][1]+','+cp[i][2]+');"></div>');
}
答案 1 :(得分:1)
一种简单的方法是迭代并将html附加到元素。
var html = '';
for(var i=0;i< 9; i++) {
html += '<div class="swatch" style="background-color:rgb(' + cp[i][0] + ',' + cp[i][1] + ',' + cp[i][2] + ');"></div>'
}
$("#swatches").append(html);
答案 2 :(得分:1)
首先,您可以将$('#swatches')
分配给变量,这样jQuery就不必每次都解析string
。其次,您可以使用for
循环来减少代码长度:
var swatches = $('#swatches');
for(var i = 0; i < 9; i++) {
swatches.append('<div class="swatch" style="background-color:rgb('+cp[i][0]+','+cp[i][1]+','+cp[i][2]+');"></div>');
}
答案 3 :(得分:1)
我将如何做到这一点:
function getColorString(rgb) {
return 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
}
for (var i = 0; i < cp.length; i++) {
$('<div>', {
class: 'swatch',
css: {
backgroundColor: getColorString(cp[i])
}
}).appendTo('#swatches');
}