Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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/70.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_Arrays - Fatal编程技术网

Javascript 具有数组的单击式多功能

Javascript 具有数组的单击式多功能,javascript,html,arrays,Javascript,Html,Arrays,我试图创建这段代码,其中一个元素被推入数组,显示并添加一个样式,该样式为它们提供一个随机的十六进制颜色。我已经部分完成了十六进制颜色和向数组中推进,但我似乎无法添加样式或显示div…以下是我的代码: JS 您可以使用DOM方法而不是document.write创建元素。不鼓励使用它。以下内容将完成您的目标: document.getElementByIdaddEl.addEventListener'click',=>{ 让container=document.querySelector.con

我试图创建这段代码,其中一个元素被推入数组,显示并添加一个样式,该样式为它们提供一个随机的十六进制颜色。我已经部分完成了十六进制颜色和向数组中推进,但我似乎无法添加样式或显示div…以下是我的代码:

JS


您可以使用DOM方法而不是document.write创建元素。不鼓励使用它。以下内容将完成您的目标:

document.getElementByIdaddEl.addEventListener'click',=>{ 让container=document.querySelector.container'; 设el=document.createElementdiv; el.className=‘元素bg’; el.innerText='foo'; el.style.backgroundColor=getRandomColor; 容器.附件.儿童; }; 函数getRandomColor{ return+Math.random*0xFFFFFF不要使用document.write。而是使用document.createElement创建HTML元素,然后将它们附加到其他元素

您也可以在创建元素时设置它们的颜色并附加一次。无需在每次单击按钮时对所有元素执行所有这些操作

如果您想随机化每个按钮上每个元素的颜色,您可以选择所有元素,迭代它们,并以这种方式随机化它们的颜色

document.getElementByIdaddEl.onclick==>{ var el=document.createElementdiv; el.className=[元素bg];
var colorBg=+Math.random*0xFFFFFF要为代码提供结构,最好将每个操作作为一个单独的函数。随机颜色字符串生成、不显示的新DOM元素构造、主要操作。这样就很容易阅读代码:可以在任何点开始阅读并理解代码行正在做什么,不是吗不必学习整个代码逻辑

这里发生了什么。它从一个按钮点击开始,触发一个点击事件,该事件绑定了函数addEl。addEl将从createEl获取一个新的DOM元素,将其放置在容器元素中,并将该元素推到元素数组中(如果原始问题中未涉及的某些其他功能需要)

函数getColor{
return+Math.random*0xFFFFFF这可以使用jquery简单地完成

$function{ 变量元素=[] 变量el= $addEl.clickfunction{
var colorBg=+Math.random*0xFFFFFF不使用document.write。取而代之的是,检索您希望元素显示位置的父元素,然后检索parent.innerHTML+=ELI是否有特殊原因使变量的作用域为局部而非全局?@Miguel始终将变量的作用域设置为所需的最接近级别。您可以在事件侦听器函数中创建、编辑和附加新元素。没有理由认为它们应该是全局的。请谨慎使用全局范围。我试图避免使用jQuery tho,并学习如何使用普通JS。请添加一些解释,说明此代码为什么/如何帮助OP。这将有助于提供一个swer未来的观众可以从中学习。有关更多信息,请参阅。在这种情况下,阵列是否可以完全删除?@Miguel我认为在阵列中也有元素是一项任务。因此,是的,元素阵列中没有必要。
var colorBg = '#' + (Math.random() * 0xFFFFFF << 0).toString(16)
var elements = []
var el = '<div class="element bg"></div>'

document.getElementById("addEl").onclick = () => {
    elements.push(el)
    //console.log(elements)

    for (i = 0; i < elements.length; i++) {

        console.log(elements[i])
        document.write(elements[i])
        //elements[i].style.backgroundColor = colorBg
    }

}
<div class="container">
<div class="element bg"></div>
</div>
<input type="button" value="Add Block" id="addEl"/>
html, body{
    height:80%;
}

.container{
    width:100%;
    height:100%;
}

.element{
    width:100px !important;
    height:100px;
}