从循环更改项目的文本

时间:2019-05-30 16:58:47

标签: javascript jquery

我想更改文本,或者从数据库中列出的项目列表中删除一个字母,我尝试了其他简单的jQuery方法,但似乎没有一个起作用。

我尝试了jQuery .find()、. children()、. text()、. html()。

if(requiredVisits == 1){
  $(`.upcoming-item${i + 1} `).find('.how-earned').text('EARNED FROM 1 VISIT')
}


$('#upcoming-rewards').append(`
    <item class="upcoming-reward-item upcoming-item${i + 1} available">
    <span>
        <p style="line-height: 16px" class="reward-item reward${i + 1}">${reward}</p>
    <span id="how-earned" class="how-earned">EARNED FROM ${requiredVisits} VISITS</span>
    </span>
   </item>
`)

我也尝试只是console.log写入的文本,但得到的结果是“未定义”或空白。因此,也许我没有正确到达所需的跨度。任何帮助将是巨大的! :)

预期结果将是“从1次访问获得”而不是“从1次访问获得”

3 个答案:

答案 0 :(得分:1)

一种选择是最初使用适当的语言而不是尝试更新它...

var visitsText = (requiredVisits === 1) ? 'VISIT' : 'VISITS';

$('#upcoming-rewards').append(`
    <item class="upcoming-reward-item upcoming-item${i + 1} available">
    <span>
        <p style="line-height: 16px" class="reward-item reward${i + 1}">${reward}</p>
    <span id="how-earned" class="how-earned">EARNED FROM ${requiredVisits} ${visitsText}</span>
    </span>
   </item>
`)

答案 1 :(得分:1)

您似乎尝试在实际创建元素之前更改其文本。尝试移动

if(requiredVisits == 1){
    $(`.upcoming-item${i + 1} `).find('.how-earned').text('EARNED FROM 1 VISIT')
}

.append()操作之后。

答案 2 :(得分:1)

修复您的html代。如果可能的话,请勿尝试在事后进行修复。

$('#upcoming-rewards').append(`
    <item class="upcoming-reward-item upcoming-item${i + 1} available">
        <span>
            <p style="line-height: 16px" class="reward-item reward${i + 1}">${reward}</p>
            <span id="how-earned" class="how-earned">EARNED FROM ${requiredVisits} VISIT${requiredVisits > 1 ? 'S' : ''}</span>
        </span>
    </item>
`);