У меня есть этот код

if ($('input#grommet').is(':checked')) {
     if (width <= 96) {
           var grommetQTY = 4;
     } else if (width > 96) {
            grommetQTY = (Math.floor(width / 24));
            grommetQTY = grommetQTY - 4;
            grommetQTY = grommetQTY * 2;
            grommetQTY = grommetQTY +4;
     }
}

И мне нужно добавить 2 к GrommetQTY для каждого целого 24 дюйма (2 фута) по ширине 96. Есть ли способ сделать это? То, что это пытается сделать, дает оценку баннера. Мы добавили еще 2 кольца с интервалом в 2 фута, но поскольку это индивидуальный размер, он может иметь ширину 96 футов, и я не хочу писать оператор else if для каждого интервала в два фута. Я надеюсь, что есть способ добавлять только два к количеству каждый раз, когда ширина увеличивается еще на 24 дюйма по сравнению со стандартной шириной 96 дюймов, поэтому, если ширина равна 96 или меньше, количество равно 4, при 120 его 6, при 144 его 8 и т. Д.

-3
Sharkn8do 13 Янв 2017 в 00:16

3 ответа

Лучший ответ

Вместо того, чтобы придумать уравнение для этого, вот цикл for, который будет делать то, что вам нужно:

var grommetQTY = 0;
for(var i = 96; i < n; i++)
    if(i%24 == 0) 
        grommetQTY += 2;

Где n длина. Это ужасно неэффективно, и его можно ускорить, просто выполнив:

var grommetQTY = 0;
for(var i = 96; i < n; i+=24)
    grommetQTY += 2;

Это лучше, но все же не идеально. Идеальным решением в вашем случае было бы уравнение.

П.С. - Уравнение Math.floor( Math.max((n - 96), 0) / 24 ) * 2 + 4, если я вас правильно понимаю.

1
Chris 12 Янв 2017 в 21:37

Math.pow(2, grommetQTY) * (Math.floor(96 / 24))

2 к GrommetQTY на каждые целые 24 дюйма в 96. Это то, что вам нужно?

Math.pow(a, b) дает a силе b


< Сильный > Edit:

var qty = (Math.floor(n / 24)) * 2

Где n - это пиксели (96 в вашем примере).


< Сильный > Edit:

var qty = 4 + ((width > 96) ? ((Math.floor((width - 96) / 24) * 2) : 0);

Это оно?

0
dodov 12 Янв 2017 в 22:22

Вы могли бы сделать что-то вроде этого:

var extra = width - 96
var grommetQTY = 4;
if (extra > 0) {
  grommet += Math.floor((extra / 24)) * 2;
}

Переменная extra содержит, как следует из названия, дополнительную длину, которую вы хотели бы принять во внимание. Если это 0 или ниже, это означает, что это 96 и ниже.

Затем для extra > 0 вы можете изменить его на extra >= 24, так как любое дополнительное значение меньше 24 вернет 0.

0
A. Lau 12 Янв 2017 в 22:07