在JavaScript中创建按钮元素

时间:2018-06-24 02:46:45

标签: javascript html button element createelement

我正在尝试在javascript中创建按钮元素,而不使用jQuery

尝试将其附加到DOM时,我总是收到错误消息。

  

“无法读取null的属性'appendChild'”

我到处都是,找不到如何创建按钮。在w3Schools示例中,他们在HTML中已经创建的按钮元素上使用函数,这不是我要尝试做的。这就是我所拥有的。

HTML:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<meta http-equiv="X-UA-Compatible" content="ie=edge"> 
<title>Document</title> 
<script src="myapp.js"></script> 
</head> 
<body> 
<div id="btn">Button Here</div> 
</body> 
</html>

myapp.js

var element = document.createElement("button");
element.appendChild(document.createTextNode("Click Me!"));
var page = document.getElementById("btn");
page.appendChild(element);
console.log(element);

5 个答案:

答案 0 :(得分:4)

您的脚本在DOM完成加载之前运行,因此在您的'btn'div存在之前。有一些简单的解决方案。一种是将您的脚本标签移到正文底部,例如:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<meta http-equiv="X-UA-Compatible" content="ie=edge"> 
<title>Document</title> 
</head> 
<body> 
<div id="btn">Button Here</div> 
<script src="myapp.js"></script> 
</body> 
</html>

另一种更好的解决方案是在脚本中添加一行,以确保在脚本运行之前已加载HTML。

document.addEventListener("DOMContentLoaded", function() {
     var element = document.createElement("button");
     element.appendChild(document.createTextNode("Click Me!"));
     var page = document.getElementById("btn");
     page.appendChild(element);
     console.log(element);
 });

//改成“ meta charset =” UTF-8“”。

答案 1 :(得分:0)

在这里工作演示

var nodes = List.of(
    new Node("Error", "xyz"), new Node("Success", "abc"),
    new Node("none", "prq"), new Node("Success", ""),
    new Node("Success", "xyz"), new Node("Warning", "efc")
);

var map = nodes.stream()
               .collect(Collectors.groupingBy(Node::getType,
                        Collectors.mapping(Node::getName, Collectors.toList())));

System.out.println(map);
{Warning=[efc], Error=[xyz], none=[prq], Success=[abc, , xyz]}

答案 2 :(得分:0)

很可能function createButton() { var element = document.createElement("button"); element.appendChild(document.createTextNode("Click Me!")); var page = document.getElementById("btn"); page.appendChild(element); console.log(element); } createButton();是未定义的对象。这是一个带有工作示例的小提琴:

https://jsfiddle.net/2Lon63uj/

答案 3 :(得分:0)

您确定HTML文件可以看到您的脚本。为什么不尝试在控制台窗口上运行小型测试。查看这些元素的输出,并查看其是否为空。

答案 4 :(得分:0)

function myFunction() {
  var btn = document.createElement("BUTTON");
  btn.innerHTML = "CLICK ME";
  document.body.appendChild(btn);
}
<!DOCTYPE html>
<html>
<body>

<p>Click the button to make a BUTTON element with text.</p>

<button onclick="myFunction()">Try it</button>



</body>
</html>