Мне нужно условно изменить фон div на основе значения переменной здесь, это мой код:
<script type="text/javascript">
$(document).ready(function(){
if (combo.hcs <= 10) && (combo.hcs >= 1)
$(".myClass").css("background-image", "url('BB.png')";
else if (combo.hcs <= 20) && (combo.hcs >= 11)
$(".myClass").css("background-image", "url('BH.png')";
else if (combo.hcs <= 30) && (combo.hcs >= 21)
$(".myClass").css("background-image", "url('BM.png')";
else if (combo.hcs <= 40) && (combo.hcs >= 31)
$(".myClass").css("background-image", "url('HB.png')";
else if (combo.hcs <= 50) && (combo.hcs >= 41)
$(".myClass").css("background-image", "url('HH.png')";
else if (combo.hcs <= 60) && (combo.hcs >= 51)
$(".myClass").css("background-image", "url('HM.png')";
else if (combo.hcs <= 70) && (combo.hcs >= 61)
$(".myClass").css("background-image", "url('MB.pmg')";
else if (combo.hcs <= 80) && (combo.hcs >= 71)
$(".myClass").css("background-image", "url('MH.png')";
else if (combo.hcs <= 99) && (combo.hcs >= 81)
$(".myClass").css("background-image", "url('MM.png')";
}
</script>
Я не уверен, что это лучший подход или нет, но эфир, я получаю следующую ошибку в Chrome:
Uncaught SyntaxError: Unexpected token &&
Вам нужно включить два условия в те же скобки, например:
else if (combo.hcs <= 99 && combo.hcs >= 81)
Полный скорректированный код:
<script type="text/javascript">
$(document).ready(function(){
if (combo.hcs <= 10 && combo.hcs >= 1)
$(".myClass").css("background-image", "url('BB.png')");
else if (combo.hcs <= 20 && combo.hcs >= 11)
$(".myClass").css("background-image", "url('BH.png')");
else if (combo.hcs <= 30 && combo.hcs >= 21)
$(".myClass").css("background-image", "url('BM.png')");
else if (combo.hcs <= 40 && combo.hcs >= 31)
$(".myClass").css("background-image", "url('HB.png')");
else if (combo.hcs <= 50 && combo.hcs >= 41)
$(".myClass").css("background-image", "url('HH.png')");
else if (combo.hcs <= 60 && combo.hcs >= 51)
$(".myClass").css("background-image", "url('HM.png')");
else if (combo.hcs <= 70 && combo.hcs >= 61)
$(".myClass").css("background-image", "url('MB.pmg')");
else if (combo.hcs <= 80 && combo.hcs >= 71)
$(".myClass").css("background-image", "url('MH.png')");
else if (combo.hcs <= 99 && combo.hcs >= 81)
$(".myClass").css("background-image", "url('MM.png')");
}
</script>
Я думаю, что мой подход состоял бы в том, чтобы сохранить фоновые URL-адреса в массиве.
var imgs = ['BB.png','BH.png']; // etc in right order
var myIndex = Math.floor(combo.hcs/10);
$(".myClass").css("background-image", "url(" + imgs[myIndex] + ")");
С помощью этого решения вам не нужны инструкции if/else. За каждую десятую вы храните img-name в массиве.
Если вы попросите другое решение, я бы сделал это в общем виде. Я бы назвал изображения, такие как 10.png, 20png, 30.png... 100.png
и затем загрузит их примерно так:
var imageName = Math.ceil(combo.hcs/10)*10
var imageFullName = imageName+'.png'
$(".myClass").css("background-image", "url('"+imageFullName+"')";
вы отредактируете его, но я надеюсь, что вы поняли, у этого есть только 3 строки. Вы также можете добавить условия для граничных размеров.
И про вашу ошибку: ваш код
if (combo.hcs <= 10) && (combo.hcs >= 1)
должно быть следующим:
if ((combo.hcs <= 10) && (combo.hcs >= 1))
Рассмотрим инструкцию switch и более сжатый подход, чтобы оставаться DRYer и чище:
var bg;
var x = combo.hcs;
switch (true) {
case (x>0 && x<=10):
bg = "BB";
break;
case (x>10 && x<=20):
bg = "BH";
break;
// etc....
}
$(".myClass").css("background-image", "url('" + bg + ".png'");
Вы не должны закрывать скобки. Скобки заключают условие:
if (combo.hcs <= 10 && combo.hcs >= 1)
$(".myClass").css("background-image", "url('BB.png')";
;
, Вам нужно это:$(".myClass").css("background-image", "url('MM.png')");
Поэтому добавьте скобку в каждую инструкцию, и все готово. Я предлагаю вам взглянуть на ответ Джимми Йоханссона ниже, если вы хотите еще больше улучшить свой код.