生成随机颜色jQuery不添加css

生成随机颜色jQuery不添加css,jquery,html,css,Jquery,Html,Css,我试图创建一个随机颜色选择器,我希望div的类颜色在随机生成的十六进制颜色中完全着色。我尝试只添加1个块(有效),现在我尝试将其添加到foreach。颜色如下所示: $("#generateColors").click(function () { $('.color').each(function () { $.ajax({ url: '/Pastel/PastelRGB', type

我试图创建一个随机颜色选择器,我希望div的类颜色在随机生成的十六进制颜色中完全着色。我尝试只添加1个块(有效),现在我尝试将其添加到foreach。颜色如下所示:

    $("#generateColors").click(function () {
        $('.color').each(function () {
            $.ajax({
                url: '/Pastel/PastelRGB',
                type: "Get",
                success: function (data) {
                    $(this).css({
                        "background-color": data.hex
                    });
                    //$("#color1p").text(data.hex);
                },
                error: function (jqXHR, err) {
                    LogError(err);
                }
            });
        });
    });
我的HTML看起来像这样

<div><input type="button" id="generateColors"/></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>
<div class="color" style="width:200px;height:200px;background-color:white;"></div>

css只是不适用于div

我正在学习HTML JS和CSS,所以任何帮助都会很好


问候,Mick

中的
成功
不是指你的元素,而是指成功的范围

记住变量中的元素,然后使用它而不是此元素

$("#generateColors").click(function () {
    $('.color').each(function () {
        var element = this

        $.ajax({
            url: '/Pastel/PastelRGB',
            type: "Get",
            success: function (data) {
                $(element).css({
                    "background-color": data.hex
                });
            },
            error: function (jqXHR, err) {
                LogError(err);
            }
        });
    });
});
或者只使用每个参数

.each(function (index,element) { ...

success
的内部并没有引用您的元素,而是引用了success范围

记住变量中的元素,然后使用它而不是此元素

$("#generateColors").click(function () {
    $('.color').each(function () {
        var element = this

        $.ajax({
            url: '/Pastel/PastelRGB',
            type: "Get",
            success: function (data) {
                $(element).css({
                    "background-color": data.hex
                });
            },
            error: function (jqXHR, err) {
                LogError(err);
            }
        });
    });
});
或者只使用每个参数

.each(function (index,element) { ...

这可以在客户端完成。做
“#”+Math.random().toString(16)。子字符串(2,8)
往往工作得很好。因此,改变:

$(this).css({
    "background-color": data.hex
});
致:


这可以在客户端完成。做
“#”+Math.random().toString(16)。子字符串(2,8)
往往工作得很好。因此,改变:

$(this).css({
    "background-color": data.hex
});
致:


您可以定义一个简单的函数getColor()来生成随机颜色:

在此函数中,我们使用ASCII码数组


您可以定义一个简单的函数getColor()来生成随机颜色:

在此函数中,我们使用ASCII码数组


为什么不发出一个ajax请求,返回一个随机颜色的数组(长度
$('.color').length
),然后调用each()来分配颜色?这里需要使用ajax吗?您可以完全在客户端生成随机颜色。至少有两件事是错误的:1)您在每次单击时同时进行十次ajax调用,2)然后您将颜色分配给
$(this)
,这是ajax成功函数,而不是HTML元素。为什么不发出一个返回数组(长度
$(“.color”).length
)的随机颜色,然后调用each()来分配颜色?这里是否需要使用AJAX?您可以完全在客户端生成随机颜色。至少有两件事是错误的:1)每次单击都同时进行十次AJAX调用,2)然后将颜色分配给
$(此)
,这是ajax成功函数,而不是HTML元素。