如何在javascript中创建元素并向其传递参数?
在新的v1web组件规范中,您可以通过如下方式创建新元素如何在javascript中创建元素并向其传递参数?,javascript,html,web-component,Javascript,Html,Web Component,在新的v1web组件规范中,您可以通过如下方式创建新元素 class gg extends HTMLElement { constructor(a) { super(); } } customElements.define('gg-gg', gg); 然后你可以创建一个新的实例,就像 <gg-gg></gg-gg> 甚至 document.createElement("gg-gg"); 但在最后一种方法中,如何将构造函数中的a的参数
class gg extends HTMLElement {
constructor(a) {
super();
}
}
customElements.define('gg-gg', gg);
然后你可以创建一个新的实例,就像
<gg-gg></gg-gg>
甚至
document.createElement("gg-gg");
但在最后一种方法中,如何将构造函数中的a
的参数传递给document.createElement(“gg gg”)
,您可以将第二个参数传递给document.createElement()
,其中属性设置为“是”
,在构造函数中使用设置超时()
调用变量标识符引用super()
上的.getAttribute()
,以获取“is”
属性的值
gg类扩展了HtmleElement{
建造师(a){
const curr=super();
设置超时((el)=>{
log(JSON.parse(el.getAttribute(“is”))
},0,当前)
}
}
自定义元素。定义('gg-gg',gg);
const g=document.createElement(“gg-gg”,“is”:JSON.stringify({“abc”:123}))
您可以在第二个参数处传递和对象到文档。createElement()
其中属性设置为“is”
,在构造函数中使用setTimeout()
调用。对变量标识符引用super()
使用getAttribute()
获取“is”属性的值
gg类扩展了HtmleElement{
建造师(a){
const curr=super();
设置超时((el)=>{
log(JSON.parse(el.getAttribute(“is”))
},0,当前)
}
}
自定义元素。定义('gg-gg',gg);
const g=document.createElement(“gg-gg”,“is”:JSON.stringify({“abc”:123}))
您可以使用函数创建一个类
表达式,其中默认参数用于设置构造函数
constgcreate=(…道具)=>{
const gg=类扩展HtmleElement{
构造函数(a=道具){
控制台日志(a);
a、 查找(prop=>
typeof prop==“对象”
&&!Array.isArray(道具))
[“def”](789)
超级();
}
}
自定义元素。定义('gg-gg',gg);
返回文档.createElement(“gg gg”);
}
设g=gcreate(
//传递参数
“abc”
, 123
, [4,5,6]
,{def:(prop)=>console.log(prop)}
,空,无效0
);
您可以使用函数创建一个类
表达式,其中默认参数用于设置构造函数
constgcreate=(…道具)=>{
const gg=类扩展HtmleElement{
构造函数(a=道具){
控制台日志(a);
a、 查找(prop=>
typeof prop==“对象”
&&!Array.isArray(道具))
[“def”](789)
超级();
}
}
自定义元素。定义('gg-gg',gg);
返回文档.createElement(“gg gg”);
}
设g=gcreate(
//传递参数
“abc”
, 123
, [4,5,6]
,{def:(prop)=>console.log(prop)}
,空,无效0
);代码>这里有另一种方法可以将参数加载到构造函数中。它通过加载临时有效载荷来工作
//参数
var-args;
//创建元素
var createElem=函数(元素、参数){
参数类型=='undefined'?参数={}:args=参数;
返回文档.createElement('gg-gg');
}
//定义自定义组件
定义('gg-gg',类扩展HtmleElement{
构造函数(){
超级();
console.log(args);
}
});
//论据
createElem('gg-gg'{
宽度:500,
身高:500,
});
//没有争论
createElem('gg-gg')代码>这里有另一种方法可以将参数加载到构造函数中。它通过加载临时有效载荷来工作
//参数
var-args;
//创建元素
var createElem=函数(元素、参数){
参数类型=='undefined'?参数={}:args=参数;
返回文档.createElement('gg-gg');
}
//定义自定义组件
定义('gg-gg',类扩展HtmleElement{
构造函数(){
超级();
console.log(args);
}
});
//论据
createElem('gg-gg'{
宽度:500,
身高:500,
});
//没有争论
createElem('gg-gg')代码>为什么?您可以通过添加另一组括号将参数传递给函数中包含的函数myFunction(par,am)(ano,ther,param)
这与我的问题有什么关系?@omega预计何时使用参数?不可能。请改用另一种方法。为什么?您只需添加另一组括号即可将参数传递给函数中包含的函数myFunction(par,am)(ano,ther,param)
这与我的问题有什么关系?@omega预计何时使用参数?不可能。请改用另一种方法。通过使用connectedCallback(){alert(this.getAttribute('is'));}
可以避免超时,但这种方法似乎过于冗长,仅限于字符串。这真的是使用createElement
传递参数的最佳方式吗?@omega“最佳”的定义是什么?类似于document.createElement('gg-gg',{},1)然后a
将在构造函数中为1。这似乎是一种优雅而正式的方式,可以支持任何类型的数据参数。但是如果没有类似的东西,那么我想这样传递参数是不受支持的。不确定规范是否提供了该功能。另一种方法是创建一个函数,使用默认参数为构造函数设置参数,调用创建类的函数,可以调用.createElement()
使用connectedCallback(){alert(this.getAttribute('is'));}避免超时
但这种方式似乎过于冗长,仅限于字符串。这真的是使用createElemen传递参数的最佳方式吗
document.createElement("gg-gg");