三元运算符不会更改backgroundColor

www*_*jsw 0 javascript ternary-operator

我试图在输入为空时设置背景,并在有一些输入时保持此值

function emptyto(element){
    return element.value == '' ? element.style.backgroundColor = "#ccc" : element.val()
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

您只是将作业放在错误的位置:

function emptyto(element){
    return element.style.backgroundColor = element.value == '' ? "#ccc" : element.val();
    // ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
Run Code Online (Sandbox Code Playgroud)

另外:DOM元素没有val方法。您要么想value在两个地方都使用:

function emptyto(element){
    return element.style.backgroundColor = element.value == '' ? "#ccc" : element.value;
    // ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是jQuery,则包装元素并val在两个地方都使用(以及css):

function emptyto(element){
    var $el = $(element);
    return $el.css("backgroundColor", $el.val() == '' ? "#ccc" : $el.val());
}
Run Code Online (Sandbox Code Playgroud)

实际上,由于它''是一个伪造的值,因此我们可以使用功能强大的||运算符 1来简化该运算

function emptyto(element){
    return element.style.backgroundColor = element.value || "#ccc";
}
Run Code Online (Sandbox Code Playgroud)

1(这是我贫乏的小博客上的帖子。)