Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改未命名的元素';使用javascript创建html标记类型_Javascript_Html_Dom - Fatal编程技术网

更改未命名的元素';使用javascript创建html标记类型

更改未命名的元素';使用javascript创建html标记类型,javascript,html,dom,Javascript,Html,Dom,所以我有一个由另一个进程创建的元素,它是在一个类似于 var their_element = document.createElement("div"); /* Lots of stuff is done to their_element */ 这个对象稍后会传递给我。它还没有被附加到任何地方。问题是,当它最终到达html时,我需要它是不同的html标记类型,例如: <form></form> 不起作用 此外,这也不起作用: their_element.tagName

所以我有一个由另一个进程创建的元素,它是在一个类似于

var their_element = document.createElement("div");
/* Lots of stuff is done to their_element */
这个对象稍后会传递给我。它还没有被附加到任何地方。问题是,当它最终到达html时,我需要它是不同的html标记类型,例如:

<form></form>
不起作用

此外,这也不起作用:

their_element.tagName = "FORM"
var outside = their_element.outerHTML;
outside = outside.replace(/div/g, 'form');
their_element.outerHTML = outside;
同样,这也不起作用:

their_element.tagName = "FORM"
var outside = their_element.outerHTML;
outside = outside.replace(/div/g, 'form');
their_element.outerHTML = outside;
所有这些在追加时仍将其保留为DIV。
(我不是在寻找jQuery)

检查这一点以获得跨浏览器的兼容性,但是元素上有一些属性和方法可能会有用。特别是,
Element.attributes
Element.hasaAttributes()
,以及
Element.setAttribute()
。见:

我不打算在这里使用ES6,所以我们不必担心传输。如果需要,您可以更新:

var el=document.createElement('div');
el.id=“随机”;
el.style.background=“红色”;
el.style.width=“200px”;
el.style.padding=“10px”;
el.style.margin=“10px”;
el.innerHTML=“”;
log({“Element 1”:el});
var newEl=document.createElement('form');
log({“转换前的元素2”:newEl})
if(el.hasAttributes()){
var attr=el.attributes
对于(变量i=0;idocument.body.append(newEl)我不确定您在这里试图做什么,似乎您可能在给问题增加复杂性?这没有真正的意义…如果您需要
,请使用
document.createElement(“表单”)
。也许,将节点名传递给函数并使用
document.createElement(nodeName)
。重点是,元素已经完成了一些工作,包括样式设置、添加内容、分配id等。添加它的脚本几乎超出了可编辑的范围,为什么需要将此
转换为
?可以将div附加到表单中吗?div是传递元素的函数的默认值。我目前正在做的函数是尝试扩展它可以做什么,以便它也可以用来制作窗体、跨距等。表单只是一个例子。它是关于扩展一些其他代码的功能。虽然它可能不适合每个用例,但使用您的解决方案并以
el=newEl为我做这件事。令人惊叹的!