努力使用 JS 创建 HTML 元素并用新内容替换它(document.createElement)

问题描述 投票:0回答:1

我目前正在开发一个小型“项目”(如果你可以这样称呼它的话)。 这是非常简单的两个按钮,它们影响单独工作的

元素,但现在我决定使用对象和 DOM 来更好地理解它。所以我在 p 下面添加了一个排名,应该是第一、第二……依此类推,具体取决于你是哪个数字。

—-HTML—-

<body>

<div id="OuterShell">

<div id="ContainsButtons">
<button id="AddPs">Add</button>
<button id="RemovePs">Remove</button>
</div>
<div id="ContainsPs">
<p id="text" class="text">0</p> 
</div>
</div>

<script src="./TestJS.js"></script>
</body>
</html>

——结束—— 现在我的问题是,它要么删除我当前添加的新排名,删除所有内容,要么什么都不删除,只是添加越来越多的段落。

—-JS—-

var Text = document.getElementById("text");
var B1 = document.getElementById("AddPs");
var B2 = document.getElementById("RemovePs");
var div1 = document.getElementsByTagName("div")[2];

var counter = 0;
var x = false;

function AddOne(){
if(counter < 10){
counter++
update();
}
else{
Text.innerText = TextStored.Limit;
}
}

function RemoveOne(){
if(counter > 0){
counter--
update();
}
else{
Text.innerText = TextStored.Limit;
}
}

function update(){
Text.innerText = counter;
var ranking = document.createElement("p");
var ItsText = document.createTextNode(TextStored.Text[counter]);
ranking.appendChild(ItsText);
div1.appendChild(ranking);

if(x){
var deleted = ranking.parentNode;
deleted.removeChild(ranking);
}

x = true;
return ranking;
}

var TextStored = {
Text: [0,"1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th"],
Limit: "You reached the limit"
};

B1.onclick = AddOne;
B2.onclick = RemoveOne;

——结束——-

我首先自己尝试了不同的代码放置,使用不同的变量,甚至试图以复杂的方式解决它,但这也不起作用,然后我最后在网上查找了它,但我没有找到有用的东西(或者没有找到有用的东西)不明白/谷歌它正确。 什么都不起作用,我只是更好地理解了为什么它不起作用以及 PC 如何读取代码。

——期待—— 当我按下一个按钮(例如添加)时,它应该输出这个

1 第一

当我再次按“添加”时,它应该更新两个数字

2 第二

我无法更新第二个,也不知道该怎么办。

javascript html dom
1个回答
0
投票

你让事情变得有点复杂了,你已经掌握了如何更改元素文本的知识,无需创建元素、查询元素等。在 HTML 中定义它(

<div id="rank">
)并通过 JS 访问它。 还可以使用
addEventListener
而不是覆盖的
on*
处理程序。

注意 HTML 中的新元素和 updated

update()
函数:

var Text = document.getElementById("text");
var Rank = document.getElementById("rank");
var B1 = document.getElementById("AddPs");
var B2 = document.getElementById("RemovePs");
var ContainsPs = document.getElementById("ContainsPs");

var counter = 0;
var x = false;

function AddOne() {
  if (counter < 10) {
    counter++
    update();
  } else {
    Text.textContent = TextStored.Limit;
  }
}

function RemoveOne() {
  if (counter > 0) {
    counter--
    update();
  } else {
    Text.textContent = TextStored.Limit;
  }
}

function update() {
  Text.textContent = counter;
  Rank.textContent = TextStored.Text[counter];
}

var TextStored = {
  Text: [0, "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th"],
  Limit: "You reached the limit"
};

B1.addEventListener("click", AddOne);
B2.addEventListener("click", RemoveOne);
<div id="OuterShell">
  <div id="ContainsButtons">
    <button id="AddPs">Add</button>
    <button id="RemovePs">Remove</button>
  </div>
  <div id="ContainsPs">
    <p id="text" class="text">0</p>
    <p id="rank" class="text"></p>
  </div>
</div>

© www.soinside.com 2019 - 2024. All rights reserved.