HTML-строка в свойстве объекта не будет обновляться - PullRequest
0 голосов
/ 29 августа 2018

У меня есть конструктор объекта, который устанавливает некоторые свойства, а затем использует их для конкатенации строки для записи в 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>";

Позже в игровой функции я изменяю очки attack и defense для этого объекта "Fighter", и это работает, как и ожидалось, и мои 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 голосов
/ 29 августа 2018

Поскольку вы все еще находитесь в конструкторе, вам необходимо обратиться к переменным без this. , которые являются параметром И свойством объекта Fighter.

Так измени 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>"

И все остальные свойства, которые относятся к свойствам над ними.

Подробнее о конструкторах вы можете узнать здесь

...