我想在JS中编写一些函数,它返回我想以多种形式使用的不同html元素(例如,button,input,select,textarea)。
我想能够将函数传递给函数,当用户与元素交互时,函数在返回的html中调用。 例如:a按钮在javascript中使用html字符串的concat函数
// I'm using ES6 syntax
const button = (button_id, button_text, on_click) => {
return '<button id="' + button_id + '" type="button" onclick="' + on_click + '">' + button_text + '</button>'
}
button("im_the_button_id", "I'm a button",() => { console.log('clicked') })
// Looks like this in the browser:
// <button type="button" onclick="function() {
// console.log('clicked');
// }">I'm a button</button>
到目前为止好,返回的HTML我的形式显示出来,看起来OK我(小白),当我检查的按钮。
但是,如果我点击按钮,我在控制台中得到一个
Uncaught SyntaxError: Unexpected token ( (index):1
。
我担心它会串联一个函数的字符串,所以我的问题是:
这甚至可能吗?
或者我是否必须传递一个id给每个元素,然后将一个onClick或onChange函数用getElementyById()
注入到我想要在我的表单中呈现的元素中?
你不能Concat的一个功能,感觉更舒适一个字符串。 – epascarello
创建一个合适的元素并使用'addEventListener'而不是 – adeneo
您可能想看看像reactjs这样的框架。我会说你的问题是XY问题的一个很好的例子。虽然不能将函数与字符串连接,但还有其他方法可以实现您的实际目标(将事件监听器添加到没有大量样板的元素)。 – Tex