[英]Create function for createElement that accepts more parameters
I am interested if there are any chances to make this code shorter. 我很想知道是否有机会使这段代码更短。
let event = document.createElement("div") event.classList.add("event") let time = document.createElement("div") time.classList.add("eventTime") time.textContent = "something" let timep = document.createElement("p") timep.classList.add("timep") let info = document.createElement("div") info.classList.add("eventInfo") let summary = document.createElement("h1") summary.classList.add("eventSummary") let organizer = document.createElement("p") organizer.classList.add("eventOrganizer") time.appendChild(timep) info.appendChild(summary) info.appendChild(organizer) event.appendChild(time) event.appendChild(info) document.getElementById("event").appendChild(event)
<div id="event"> Hello </div>
Could this be written in a shorter version for example 例如,可以用较短的版本写吗
function elementCreation(name, style) { return document.createElement(name).classList.add(style) } let event = elementCreation("div", "event") let time = elementCreation("h1", "timeclass" //and so on event.appendChild(time) document.getElementById("event").appendChild(event)
<div id="event"></div>
I have tried doing this function, but it displayed an error 我尝试执行此功能,但显示错误
TypeError: Cannot read property 'appendChild' of undefined TypeError:无法读取未定义的属性'appendChild'
Is it possible without jquery? 没有jQuery,有可能吗?
Your elementCreation
function must be return a Node
, you're tries to return a .classList.add
result (which is undefined). 您的elementCreation
函数必须返回一个Node
,您尝试返回一个.classList.add
结果(未定义)。 This code works: 此代码有效:
function elementCreation(name, style) { let element = document.createElement(name); element.classList.add(style); return element; } let event = elementCreation("div", "event") let time = elementCreation("h1", "timeclass") //and so on event.appendChild(time); document.getElementById("event").appendChild(event)
<div id="event"></div>
It is because classList.add
method does not return anything and that is last statement executed. 这是因为classList.add
方法不返回任何内容,而这是最后执行的语句。 To solved this: 要解决这个问题:
function elementCreation(name, style) {
let event = document.createElement(name);
event.classList.add(style)
return event;
}
let event = elementCreation("div", "event")
let time = elementCreation("h1", "timeclass")
event.appendChild(time);
document.getElementById("event").appendChild(event)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.