单击按钮时在 HTML 文档中动态添加标签立即撤消

Dynamically adding tags in HTML document on button click immediately reversed

我有非常简单的 table,其中 3 列显示 2 个团队及其分数。在 table 下面有一个表单,可以将新团队及其分数添加到 table。仅当给定的团队名称不同且分数不为负时,才应添加新行。我在 JavaScript 中编写了以下代码,但它没有添加该行 - 它仅在单击确认按钮时才显示新行。如果不是,数据就会消失。你能看看我的代码并检查它可能有什么问题吗?我试图在没有验证事件的情况下向 table 添加行,并且它工作得很好。

document.addEventListener("DOMContentLoaded", function () {

var team1 = document.getElementById("team1");
var team2 = document.getElementById("team2");
var points1 = document.getElementById("points1");
var points2 = document.getElementById("points2");
var button = document.querySelector(".btn-primary");
var table = document.querySelector("table");

function validate(e) {
    if (team1.value === team2.value) {
        alert("Enter two differnt teams' names");
    } else if (points1.value < 0 || points2.value < 0) {
        alert("Points number cannot be negative");
    } else {
        var newRow = document.createElement("tr");
        table.appendChild(newRow);
        var newTeam1 = document.createElement("td");
        newRow.appendChild(newTeam1);
        newTeam1.innerHTML = team1.value;
        var newTeam2 = document.createElement("td");
        newRow.appendChild(newTeam2);
        newTeam2.innerHTML = team2.value;
        var newPoints = document.createElement("td");
        newRow.appendChild(newPoints);
        newPoints.innerHTML = points1.value + " - " + points2.value;
    }
}

button.addEventListener("click", validate);
});

这里的问题是按钮是 HTML <form> 的一部分。单击按钮提交表单并重新加载页面。

这个问题有三种不同的可能解决方案。使用其中之一:


1) 将按钮放在窗体外。如果不需要,请删除 <form></form> 标签,或者将按钮放在 <form></form> 标签之外的某个位置。


2) 具体标记为不提交表单的按钮:

<button type="button" class="btn-primary">Push me</button>

type="button" 阻止按钮提交表单。


3) 在按钮的 javascript 处理程序中告诉按钮不显示其默认行为,如下所示:

function validate(e) {
{
    // Your current code here       

    // Additional code to prevent button from showing default behaviour
    e.preventDefault();
    e.returnValue = false;
}

e.returnValue = false; 适用于较旧的浏览器,e.preventDefault(); 适用于较新的浏览器。