Работа с массивом в методе .css [Jquery]

168
22 февраля 2018, 13:15

При наведении на обьект должна меняться рандомная позиция обьекта. А именно рандомно из массива береться один из 4 свойств и к нему прилагаеться число. Но когда попытался запустить(навести на обьект) консоль выдала ошибку Uncaught TypeError: e.replace is not a function. Ошибка ведет к файлу фреймворка. Вариантов нет. Код:

$(document).ready(function() {
    var vector;
    var trackM = ["left", "right", "top", "bottom"];
    var track;
    var color = "red";

//functions
function r_vector() {
    vector = Math.round(Math.random() * (1445 - 1) + 1);
}
function r_track() {
    track = Math.floor(Math.random() * trackM.length);
}
//code
$('#box').on('mouseenter', function() {
    $('#box').css({"tansition" : "1s"});
    r_vector();
    r_track();
    $('#box').css(vector, trackM[track]);
});
$('#box').on('mouseleave', function() {
    $('#box').css({"transition" : ".5s"});
});

});

Answer 1

Я думаю ошибка в этой функции

function r_track() {
    track = Math.floor(Math.random() * trackM.length);
}
  у вас  trackM.length = 4
  например Math.random() выдало 0.6
    Math.floor  округлило  - получилось 1
    1 * 4 - получилось 4
  а такого элемента в массиве trackM нет, ттам есть 0, 1,2,3
  Да и потом - у вас только 2 варианта получается либо 0 либо 4.
  что бы сгенерить случайное число  от 1 до 4,
  попробуйте функцию 

  function getRandomInRange(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }
    getRandomInRange(1, 4)

и потом в $('#box').css(vector, trackM[track]); пишите $('#box').css(vector, trackM[track - 1]); (ну или минус 1 можно раньше отнять,)

READ ALSO
Как убрать скролл в мобильной версии если все таки необходимо спрятать часть блока, чтобы при нажатии он появлялся полностью?

Как убрать скролл в мобильной версии если все таки необходимо спрятать часть блока, чтобы при нажатии он появлялся полностью?

Получается, что правая сторона, содержащая скрытый блок в мобильной версии имеет скролМожно ли как то поправить?

152
Прокрутка страницы

Прокрутка страницы

Есть сайт, его высота скажем 300vh (3 экрана пользователя) Пользователь начинает скроллить, как сделать что бы в первом случае (при взгляде на "первый...

159
Как передать значение в пост через инпут?

Как передать значение в пост через инпут?

Попробую сформировать вопрос

129
Ajax ошибка undefined

Ajax ошибка undefined

Всем привет! Я использую MySQL + PHP + Ajax Ошибка похоже возникает после обработки ajax'ом:

169