对象属性的HTML字符串不会更新

时间:2018-08-29 18:45:44

标签: dom concatenation javascript-objects object-properties

我有一个对象构造函数,该对象构造函数设置了一些属性,后来使用它们来连接字符串以写入DOM。我看到这在某些情况下有效,但在其他情况下无效。

function Fighter(name, level, attackPts, defencePts, imgSource) {

        // TRUNCATED PROPERTY ASSIGNMENTS AREA:
        this.attackPts = attackPts;
        this.defencePts = defencePts;

        // DOM ELEMENT CONSTRUCTORS:    
        this.img = "style='background: #444 url(" + imgSource + ") no-repeat center'";
        this.char_card_name = "<h3>" + this.name + "</h3>";
        this.char_card_hitdef = "<h4>" + this.attackPts + "/" + this.defencePts + "</h4>";
        this.char_card = "<div class='fighter " +  faction + "' " + "id='" + this.name + "'>" + this.img + this.char_card_name + this.char_card_hitdef + "</div>";

稍后在游戏功能中,我为此“ Fighter”对象修改了attackdefense点,并且按预期方式工作,并且我的console.log()测试验证了连接属性也更新。 。 。 。直到最后一个字符串将它们全部拉在一起并显示:

this.char_card = "<div class='fighter " +  faction + "' " + "id='" + this.name + "'>" + this.img + this.char_card_name + this.char_card_hitdef + "</div>";

当我记录此属性时,即使它们在上一个属性this.char_card_hitdef中成功更新,那些攻防编号也不会动摇

我在这里可以俯瞰什么?我在网上爬行,寻找范围或变量参考问题,但是我的日志语句使我回到了这个紧要关头。

1 个答案:

答案 0 :(得分:0)

由于您仍在构造函数中,因此需要引用不带this. 的变量,这些变量是对象Fighter 的参数AND属性。

所以改变 this.char_card = "<div class='fighter " + faction + "' " + "id='" + this.name + "'>" + this.img + this.char_card_name + this.char_card_hitdef + "</div>";

this.char_card = "<div class='fighter " + faction + "' " + "id='" + name + "'>" + this.img + this.char_card_name + this.char_card_hitdef + "</div>"

以及所有其他引用其上方属性的属性。

您可以了解有关构造函数here

的更多信息