无法在JavaScript中获取异步子生成
我试图以这样一种方式格式化此代码:当用户单击一个按钮时,每个带有重定向按钮的新输入字段都会异步插入到未排序的列表中,直到我添加了重定向按钮,以便在每次单击“生成”按钮时也插入该按钮。 这是我的JS代码无法在JavaScript中获取异步子生成,javascript,html,Javascript,Html,我试图以这样一种方式格式化此代码:当用户单击一个按钮时,每个带有重定向按钮的新输入字段都会异步插入到未排序的列表中,直到我添加了重定向按钮,以便在每次单击“生成”按钮时也插入该按钮。 这是我的JS代码 function spawnSilly() { var div = document.createElement("DIV"); var input = document.createElement("INPUT");
function spawnSilly()
{
var div = document.createElement("DIV");
var input = document.createElement("INPUT");
var button = document.createElement("BUTTON");
var att1 = document.createAttribute("type")
var att2 = document.createAttribute("placeholder")
var att3 = document.createAttribute("type")
var att4 = document.createAttribute("onClick")
att1.value = "text"
att2.value = "Title"
att3.value = "button"
att4.value = "redirect()"
input.setAttributeNode(att1)
input.setAttributeNode(att2)
button.setAttribute(att3)
button.setAttribute(att4)
div.appendChild(input)
div.appendChild(button);
var list = document.getElementById("spawnList");
list.insertBefore(div, list.childNodes[0]);
}
这是我的HTML
<ul id="spawnList">
</ul>
<button id="spawnbtn" onClick="spawnSilly()">Add</button>
添加
似乎是按钮导致了问题,但我不知道为什么?
任何帮助都会很棒!谢谢注意,这需要两个参数,属性的名称
,以及值
。以正确的方式使用它,代码可以简化如下:
函数重定向()
{
log(“单击重定向!”);
}
函数()
{
var div=document.createElement(“div”);
var输入=document.createElement(“输入”);
var button=document.createElement(“按钮”);
输入.setAttribute(“类型”、“文本”);
setAttribute(“占位符”、“标题”);
设置属性(“类型”、“按钮”);
setAttribute(“onClick”,“redirect()”);
button.innerHTML=“重定向”;
div.appendChild(输入)
div.appendChild(按钮);
var list=document.getElementById(“spawnList”);
list.insertBefore(div,list.childNodes[0]);
}
.as控制台{背景色:黑色!重要;颜色:石灰;}
Add
setAttribute
获取两个参数,第一个是属性的名称
,第二个是值
,但您只有一个-
相反,您可以使用
运算符将值设置为属性
此外,还附加了一个函数调用att4.value=“redirect()”
。因此,每当按钮被添加时,您的重定向将被调用。而是将回调
附加到重定向
,以便在单击按钮时调用它
函数()
{
const div=document.createElement(“div”);
常量输入=document.createElement(“输入”);
const button=document.createElement(“按钮”);
input.type=“text”;
input.value=“Title”;
button.type=“button”;
button.onclick=重定向;
button.textContent=“单击我!”;
div.appendChild(输入)
div.appendChild(按钮);
const list=document.getElementById(“spawnList”);
list.insertBefore(div,list.childNodes[0]);
}
函数重定向(){
log('In redirect');
}
Add
我认为您的操作顺序不对,在向dom添加子元素之前,先将元素添加到dom中。但是在将元素添加到dom之前添加属性。重定向是onClick属性的值,这难道不意味着它只会在用户单击按钮时触发吗?不是每次都叫Hanks!那么,是不是我的attribute()语法错误了?@akemedis主要是的(仅在按钮中),使用setAttributeNode()
是可以的。但是在按钮中,您使用的是setAttribute()
。简单的解决方法是用setAttributeNode()
替换它。