Как мне суммировать постоянные числа для innerWidth в JavaScript? - PullRequest
2 голосов
/ 07 мая 2019

Я пытаюсь суммировать innerWidth и constant numbers в JS, но браузер продолжает просто добавлять эти числа, а не вычислять.

enter image description here

Странно то, что минус значения работают нормально. Браузер вычисляет не только когда я пытаюсь сложить числа в innerWidth.

Есть ли способы решить эту проблему?

  Slider.prototype.sizeReseting = function(event) {
    this.frame.style.height = (window.innerWidth - '300') + 'px';
    this.frame.style.width = (window.innerWidth - '300') + 'px';
    this.film.style.height = (window.innerWidth - '400') + 'px';
    this.film.style.width = (window.innerWidth + '100') + 'px';
  }

Ответы [ 2 ]

6 голосов
/ 07 мая 2019

Поскольку вы объединяете строки .

В JavaScript строки определяются между кавычками или двойными кавычками.Следовательно, var thing = 100; - это число, а var thing = '100'; - это строка.

Строки - это просто набор символов, при этом не имеет числового значения (На самом деле это не так, но вы должны это понятьбез труда).Наличие строки var thing = '100'; имеет то же числовое значение, что и строка var thing = 'asd';, которая не равна.

Конкатенация двух строк дает в результате конкатенацию, следовательно, "asd" + "zxc" приводит к "asdzxc",точно так же, как вы объединяете две строки следующим образом: "100" + "100" приводит к "100100".

Чтобы ваш код работал, просто удалите разделитель строк и суммируйте фактические числа, например:

this.film.style.width = (window.innerWidth + 100) + 'px';

Обратите внимание, как я убрал одинарные кавычки вокруг 100, чтобы оно было действительным числом.

2 голосов
/ 07 мая 2019

Пояснение:

Эти 2 строки имеют очень разные результаты:

this.film.style.height = (window.innerWidth - '400') + 'px';
this.film.style.width = (window.innerWidth + '100') + 'px';
  • В первом знак - преобразует ваше жало 400 в число. Следовательно, вы вычитаете 400 из значения window.innerWidth (а затем добавляете строку 'px')

  • Во втором знаке + действует как оператор объединения . Следовательно, вы объединяете результат window.innerWidth + строка '100' + строка 'px'.

Решение:

Просто удалите одинарные кавычки из своего кода:

this.film.style.width = (window.innerWidth + 100) + 'px'; 
...