首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript CreateElement(br)

Javascript CreateElement(br)
EN

Stack Overflow用户
提问于 2018-10-06 03:02:53
回答 3查看 5K关注 0票数 0

我正在尝试创建一个记分员显示。

我想用htmljavascript记录比分。我已经把所有的事情都解决了,我想,但我不明白为什么这条线不打破这里。

相关守则:

代码语言:javascript
复制
var br = document.createElement("br");
var nes = document.createTextNode("---------");
scorechart.appendChild(br);
scorechart.appendChild(nc);
if(tot) {
    scorechart.appendChild(br);
    scorechart.appendChild(nes);
    scorechart.appendChild(br);
    scorechart.appendChild(tot);
}

(完整视图:https://hastebin.com/osuduluvaj.js)

除了“-”

谢谢您:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-06 03:43:24

document.createElement()创建一个元素,您只能将其附加到DOM一次。如果您想重用您创建的<br>元素,您需要克隆它,并且可以将克隆的副本插入到DOM中。见:Node.cloneNode()

代码语言:javascript
复制
var score = [];

var scoreadd_button = document.querySelector('#scoreadd-button');
var scoreadd_input = document.querySelector('#scoreadd-input');

let sc1 = 0;
let sc2 = 0;

var scorechart = document.querySelector('.scores');

function totalScores() {
    var i;
    var sum = 0;
    for (i = 0; i < score.length; i++) {
        sum += score[i];
    }
    return sum;
}

function newScore(amm) {
    score.push(amm);
    if (!score[1]) {
        var nc = document.createTextNode(amm)
    } else {
        var nc = document.createTextNode(" + " + amm);
    }

    if (sc1 == 0) {
        sc1 = amm;
    } else {
        sc2 = amm;
    }

    if (sc2 != 0) {
        var tot = document.createTextNode("= " + totalScores());
        sc1 = amm;
        sc2 = 0;
    }

    var br = document.createElement("br");
    var nes = document.createTextNode("---------");
    scorechart.appendChild(nc);
    if (tot) {
        scorechart.appendChild(br.cloneNode(true));
        scorechart.appendChild(nes);
        scorechart.appendChild(br.cloneNode(true));
        scorechart.appendChild(tot);
    }
}

scoreadd_button.addEventListener('click', function() {
    var amm = scoreadd_input.value;
    newScore(parseInt(amm, 10));
});
代码语言:javascript
复制
<button id="scoreadd-button">button</button>
<input type="text" id="scoreadd-input" />
<div class="scores"></div>

票数 4
EN

Stack Overflow用户

发布于 2018-10-06 03:25:48

好的,我修正了这个问题,不是使用变量,而是在语句中创建元素。

代码语言:javascript
复制
var nes = document.createTextNode("---------");
scorechart.appendChild(document.createElement("br"));
scorechart.appendChild(nc);
if(tot) {
    scorechart.appendChild(document.createElement("br"));
    scorechart.appendChild(nes);
    scorechart.appendChild(document.createElement("br"));
    scorechart.appendChild(tot);
}

谢谢您:)

票数 0
EN

Stack Overflow用户

发布于 2018-10-06 03:32:18

您只需要为javascript上的每个新创建的元素定义唯一变量,否则它们将被计算为一个变量。

这段代码应该能工作

代码语言:javascript
复制
var scorechart = document.querySelector('.scores');
  
    var br = document.createElement("br");
    var br2 = document.createElement("br");
    var nes = document.createTextNode("---------");

        scorechart.appendChild(br);
        scorechart.appendChild(nes);
        scorechart.appendChild(br2);
代码语言:javascript
复制
<span class="scores">
text before
</span>
after text

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52675349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档