开发者问题收集

JS DOM createElements 和 appendChild 不起作用

2020-03-28
1100

我正在尝试创建一个包含一些学生信息的网站。因此,我需要创建动态个人资料卡并将其附加到正文中。但 DOM 总是让我不知所措。

function student(src, name) {
    this.src = src;
    this.name = name;
}

var student1 = student(1, "ABC");

var card = document.createElement('div');
card.className = 'card';

var image = document.createElement('img');
image.src = 'images\/students\/' + student1.src + '.jpg';
card.appendChild(image);

var stuName = document.createElement('p');
stuName.className = 'name';
var stuNameText = document.createTextNode(student1.name);
stuName.appendChild(stuNameText);
card.appendChild(stuName);

但是屏幕上什么都没有显示。placeHere 是正文的 ID。任何帮助都将不胜感激。

编辑:
显然,应用所有必要的更改并将我的脚本标签移动到正文会有所帮助。

3个回答

the way you creating Student1 Object is wrong var student1 = new student(1, "ABC"); you forget new keywork

function student(src, name) {
    this.src = src;
    this.name = name;
}

var student1 = new  student(1, "ABC");

var card = document.createElement('div');
card.className = 'card';

var image = document.createElement('img');
image.src = 'images\/students\/' + student1.src + '.jpg';
card.appendChild(image);

var stuName = document.createElement('p');
stuName.className = 'name';
var stuNameText = document.createTextNode(student1.name);
stuName.appendChild(stuNameText);
card.appendChild(stuName);
var main=document.getElementById('main')
main.appendChild(card)
.card{    color: palevioletred;
    background: yellow;}
<div id="main"></div>
Jadli
2020-03-28

您必须将所有这些新创建的元素附加到 DOM 中已有的 div,否则 body 标签也会起作用。目前,您创建的元素未附加到 DOM。假设您有一个 div

<div id="mydiv"></div>

您可以将新创建​​的元素附加到该 div,如下所示:

ley mydiv = document.getElementById('mydiv');
mydiv.appendChild(card);

或者您可以将其附加到 body 本身,如下所示:

ley body= document.getElementByTagName('body');
body.appendChild(card);
Mr Khan
2020-03-28

您没有将代码附加到任何 DOM 元素,请在 body 中创建新的 div,并将代码附加到该 div 中。 <div id="stdCard"></div> 然后您可以使用 innerHTML 将 card 附加到创建的父 div 中。 document.getElementById("stdCard").innerHTML = card;

Umair Arshad
2020-03-28