Задать вопрос
iam_not_a_robot
@iam_not_a_robot

Почему не передаётся значение в функцию?

Работа кода https://jsfiddle.net/ut26sh3w/
var num = 1;
var SizeViewPort = document.documentElement.clientWidth;
var block = document.getElementById("layer2");
var left = window.getComputedStyle(block,null).getPropertyValue("left");
    left = left.replace("px", "");
//document.getElementById('echo2').innerHTML=left;

// начать повторы с интервалом 1 сек
var timerId = setInterval(function(SizeViewPort, left) {
  num = +num + +1;
  document.getElementById('echo').innerHTML=num;
  var css = document.getElementById("layer2");
  css.style.left = num+'px';
  document.getElementById('echo2').innerHTML=left;
}, 1000);

// через 10 сек остановить повторы
setTimeout(function() {
  clearInterval(timerId);
  //alert( 'стоп' );
  document.getElementById('echo').innerHTML='стоп';
}, 10000);

Номера строк по jsfiddle:
в 4 строке определяю переменную left
в 6 строке проверяю - она есть (0 если разкомментировать)
в 9 строке передаю её в функцию
в 14 строке на экран вместо переменной выводит undefined
Как так, где ошибка?
  • Вопрос задан
  • 217 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
K-2
@K-2
насколько я понял, не надо ее передавать в функцию. у вас не та функция, вашу переменную и так там видно.

var num = 1;
var SizeViewPort = document.documentElement.clientWidth;
var block = document.getElementById("layer2");
var left = window.getComputedStyle(block,null).getPropertyValue("left");
left = left.replace("px", "");
//document.getElementById('echo2').innerHTML=left;

// начать повторы с интервалом 1 сек
var timerId = setInterval(function() {
num = +num + +1;
document.getElementById('echo').innerHTML=num;
var css = document.getElementById("layer2");
css.style.left = num+'px';
document.getElementById('echo2').innerHTML=left;
}, 1000);

// через 10 сек остановить повторы
setTimeout(function() {
clearInterval(timerId);
//alert( 'стоп' );
document.getElementById('echo').innerHTML='стоп';
}, 10000);
Ответ написан
petermzg
@petermzg
Самый лучший программист
Такой код создает новую локальную переменную с именем left как параметр функции
setInterval(function(SizeViewPort, left) { ...
а не передает переменную туда
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы