具有 3 个参数的函数,用于创建预置元素

Function with 3 arguments to create a prepend element

提问人:EwertonRS 提问时间:11/7/2023 更新时间:11/8/2023 访问量:55

问:

这是我第一次在这里发布问题,如果我说了一些奇怪的话,对不起。我目前正在学习 Javascript。我只是尝试创建一个具有 3 个参数的函数、一个 Parent 元素、要创建的元素以及将进入其中的文本或内容。文本添加得很好,但用于创建元素的第二个参数似乎不起作用。

这是我尝试创建的函数

const newFirstChild = function(el,newEl,elContent){
    const selectElement = (parentElement) => document.querySelector(el);
    const newElement = (createElement) => document.createElement(newEl);
    newEl = newEl.innerText = elContent;
    selectElement(el,newEl).prepend(newEl);
}

我想做这样的事情:函数将获得 Parent 元素、要添加的元素以及将进入其中的内容。例如,我尝试添加新的粗体文本,文本已添加但未加粗。 我做错了什么吗?还是根本无法做到这一点?

JavaScript HTML DOM

评论

0赞 epascarello 11/8/2023
你为什么要在函数中做函数?代码比它需要的复杂 100 倍。
0赞 EwertonRS 11/8/2023
我还在学习,我试图在下面的自我回答上修复它,感谢您的反馈

答:

1赞 user3163495 11/8/2023 #1

您发布的函数中发生了很多事情,这些事情是错误的或没有意义的。

例如,您创建了一个从未被调用的函数:newElement

const newElement = (createElement) => document.createElement(newEl);

另一个问题是,当你已经有对新元素的引用时,为什么还需要创建一个新元素?如果您有对它的引用,则它已经创建。也许您正在尝试复制指向的元素?newEl

在你的问题中,是一个字符串吗?如果是这样,则可以使用以下函数创建新元素:newEl

function myFunction(parent, childType, text){
    const child = document.createElement(childType);
    parent.prepend(child);
    child.innerText = text;
}

你可以这样称呼它:

myFunction(document.getElementById("parentElem"), "div", "hello world");

评论

0赞 EwertonRS 11/8/2023
感谢您的快速回复,我想我最终迷路了,我第一次尝试这样的事情。你的代码对我有很大帮助,非常容易理解。
1赞 EwertonRS 11/8/2023 #2

根据答案改了几件事,结果是这样的:

    const newFirstChild = function(el,newEl,elContent){
        const parentElement = document.querySelector(el);
        const child = document.createElement(newEl);
        child.innerText = elContent;
        parentElement.prepend(child);
    }

我这样称呼这个函数:它添加一个新的粗体文本作为段落的子项newFirstChild('p','b','sample text')