简体   繁体   English

为createElement创建函数,该函数接受更多参数

[英]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.

相关问题 接受更多参数的回调函数 - Callback function that accepts more parameters JavaScript:创建一个函数defineFirstArg,它接受一个函数和一个参数; 接受更多参数 - JavaScript: Create a function defineFirstArg that accepts a function and an argument; Accept More Arguments 确定函数是否接受参数 - determine whether the function accepts parameters 是否可以在Mongo中执行接受任何参数的函数? - Is it possible to execute a function in Mongo that accepts any parameters? 限制Javascript函数接受的参数数量 - Limit Number of Parameters a Javascript Function Accepts 使用函数JavaScript函数createElement(tagName)创建图形 - Create figure using function javaScript function createElement(tagName) 如何使用 createElement 函数在 JavaScript 页面加载时创建 div 元素? - How to create div element on page load in JavaScript using createElement function? 具有更多参数的函数中的 preventDefault? - preventDefault in function with more parameters? 如何在渲染 function 中使用 createElement 创建 Vuetity 徽章和图标 - How to create Vuetity badge and icon using createElement in render function 更多参数上搜索function - More parameters on the search function
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM