如何正确使用appendChild
How to properly use appendChild
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = document.createElement("div");
$(newDiv).addClass("content");
$(newDiv).addClass(page);
$(newDiv).load(url);
document.getElementById("main").appendChild($(newDiv));
});
});
我想创建一个新的 div
并向其中加载一些内容,然后将其附加到 "main" div
,但我收到类型错误:
Argument 1 of Node.appendChild does not implement interface Node.
我已经有一个 div 和 id="main"
,为什么我不能将新的 div 添加到它?
基本上 appendChild()
需要一个 node
对象作为它的参数,但这里你传递的是一个 jquery 对象。你可以通过传递一个节点对象来修复它,
document.getElementById("main").appendChild(newDiv);
并且由于您正在使用 jquery,您可以使用它自己的 append()
功能,
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = $("<div>");
newDiv.addClass("content");
newDiv.addClass(page);
newDiv.load(url);
$("#main").append(newDiv);
});
});
问题是因为您混淆了 jQuery 和普通的旧 JS。错误本身是因为当它期待 DOMElement 时,您正在向 appendChild()
证明 jQuery 对象。无论如何,当您使用 jQuery 时,您也可以使用它来创建您的元素。试试这个:
$("a:last").on("click", function(e) {
e.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
$('<div />').addClass('content ' + page).appendTo('#main').load(url);
});
$(newDiv) 是一个 jquery 对象,而不是节点。您需要将节点传入。这将起作用
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = document.createElement("div");
$(newDiv).addClass("content");
$(newDiv).addClass(page);
$(newDiv).load(url);
document.getElementById("main").appendChild(newDiv);
});
});
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = document.createElement("div");
$(newDiv).addClass("content");
$(newDiv).addClass(page);
$(newDiv).load(url);
document.getElementById("main").appendChild($(newDiv));
});
});
我想创建一个新的 div
并向其中加载一些内容,然后将其附加到 "main" div
,但我收到类型错误:
Argument 1 of Node.appendChild does not implement interface Node.
我已经有一个 div 和 id="main"
,为什么我不能将新的 div 添加到它?
基本上 appendChild()
需要一个 node
对象作为它的参数,但这里你传递的是一个 jquery 对象。你可以通过传递一个节点对象来修复它,
document.getElementById("main").appendChild(newDiv);
并且由于您正在使用 jquery,您可以使用它自己的 append()
功能,
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = $("<div>");
newDiv.addClass("content");
newDiv.addClass(page);
newDiv.load(url);
$("#main").append(newDiv);
});
});
问题是因为您混淆了 jQuery 和普通的旧 JS。错误本身是因为当它期待 DOMElement 时,您正在向 appendChild()
证明 jQuery 对象。无论如何,当您使用 jQuery 时,您也可以使用它来创建您的元素。试试这个:
$("a:last").on("click", function(e) {
e.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
$('<div />').addClass('content ' + page).appendTo('#main').load(url);
});
$(newDiv) 是一个 jquery 对象,而不是节点。您需要将节点传入。这将起作用
$(document).ready(function() {
$("a:last").on("click", function(event) {
event.preventDefault();
var url = $("a:last").attr("href");
var page = url.slice(-2).trim();
var newDiv = document.createElement("div");
$(newDiv).addClass("content");
$(newDiv).addClass(page);
$(newDiv).load(url);
document.getElementById("main").appendChild(newDiv);
});
});