根据数值改变颜色

3

我不知道为什么这个不起作用。有人能告诉我问题在哪吗?

var x = $('#clicked_info').val();

if(x == 1) {

    $('#companyname_ph').css({'color':'yellow'});

}

else if(x == 2) {

    $('#companyname_ph').css({'color':'red'});

}

1
#clicked_info是什么?你确定它包含了1或者2吗? - Ry-
这里需要更多的上下文。例如,您希望在值更改时应用CSS还是仅在页面加载时应用?您正在得到关于字符串与数字比较的答案,这可能会导致失败(因此使用parseInt()是一个好习惯),但它同样也可能成功并且您可能会看到其他问题。 - Sean Redmond
这是一个<input>吗,还是其他什么?猜测一下:如果你想获取文本内容,请使用.text()而不是.val() - Ry-
3个回答

2
你需要使用parseInt将字符串转换为整数。
var x = $('#clicked_info').val();

if(parseInt(x) == 1){

   $('#companyname_ph').css({'color':'yellow'});

} else if(parseInt(x) == 2){

    $('#companyname_ph').css({'color':'red'});

}

或者使用字符串比较

if(x == '1'){

1
我在这里可能要补充一点,如果你正在将字符串转换为整数,那么最好使用 === 比较运算符而不是 == - rink.attendant.6
我认为JavaScript已经做到了这一点,当你比较'1' == 1时,它会返回false。你不需要写成'1' === 1 - Sahal
是的,它将处理 1 == '1' :) - Sahal

1

val 返回一个 string

x == 1 应该是 x == '1'

x == 2 应该是 x == '2'

或者您可以使用以下方法将 x 转换为整数。

var x = $('#clicked_info').val();
x = parseInt(x);

1 == '1'。这不应该有影响。 - Ry-

0

就像其他人在这里提到的一样,当你想将一个整数的字符串表示转换为数字类型时,应该使用parseInt。我想补充说明的是,你应该为parseInt提供一个基数,因为如果你不这样做,如果你的字符串以意外的"0x"开头,你可能会得到意想不到的结果 :)

试着这样做:

var x = parseInt($('#clicked_info').val(), 10)

如果你的字符串以 0x(十六进制)开头,不仅会得到意想不到的结果,而且如果字符串以 0(八进制)开头,也会得到意想不到的结果,这比 0x 更常见。 - rink.attendant.6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接