我怎么能写这个javascript append();更好?

时间:2015-08-21 22:40:46

标签: javascript append

我已经学习了几个星期的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()
        }
    }
}

我知道这是有效的,但我也知道必须有不同的更好的方法来写这个。我只是不知道它是什么:)

任何帮助/解释都会受到大力赞赏!

提前致谢

4 个答案:

答案 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');
}