Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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中获取异步子生成_Javascript_Html - Fatal编程技术网

无法在JavaScript中获取异步子生成

无法在JavaScript中获取异步子生成,javascript,html,Javascript,Html,我试图以这样一种方式格式化此代码:当用户单击一个按钮时,每个带有重定向按钮的新输入字段都会异步插入到未排序的列表中,直到我添加了重定向按钮,以便在每次单击“生成”按钮时也插入该按钮。 这是我的JS代码 function spawnSilly() { var div = document.createElement("DIV"); var input = document.createElement("INPUT");

我试图以这样一种方式格式化此代码:当用户单击一个按钮时,每个带有重定向按钮的新输入字段都会异步插入到未排序的列表中,直到我添加了重定向按钮,以便在每次单击“生成”按钮时也插入该按钮。 这是我的JS代码

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()
    替换它。