Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2015, 09:31
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

НЕ сколько условий if в одном скрипте
не могу заставить работать два условия
$(window).load(function (invoker) {
document.getElementById('quasactiv').style.display = 'none';
document.getElementById('wexactiv').style.display = 'none';
document.getElementById('exortactiv').style.display = 'none';


document.onkeydown =  function(qwerDown) {
if (81 === qwerDown.keyCode) {
document.getElementById('quas').style.width = '125px';
document.getElementById('quas').style.height = '125px';
}
else if (87 === qwerDown.keyCode) {
document.getElementById('wex').style.width = '125px';
document.getElementById('wex').style.height = '125px';
}
else if (69 === qwerDown.keyCode) {
document.getElementById('exort').style.width = '125px';
document.getElementById('exort').style.height = '125px';
}
else if(82 === qwerDown.keyCode) { 
document.getElementById('invoke').style.width = '125px';
document.getElementById('invoke').style.height = '125px';
}
else {

};
};
document.onkeyUp =  function(qwerUp) {
if (81 === qwerUp.keyCode) {
document.getElementById('quas').style.width = '128px';
document.getElementById('quas').style.height = '128px';
}
else if (87 === qwerUp.keyCode) {
document.getElementById('wex').style.width = '128px';
document.getElementById('wex').style.height = '128px';
}
else if (69 === qwerUp.keyCode) {
document.getElementById('exort').style.width = '128px';
document.getElementById('exort').style.height = '128px';
}

else if(82 === qwerUp.keyCode) { 
document.getElementById('invoke').style.width = '128px';
document.getElementById('invoke').style.height = '128px';
}




}



});
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2015, 09:32
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

Работает только первый if
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2015, 10:24
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

ПРоблему решил ошибка была синтаксическая
document.onkeyUp = function(qwerUp)
а нужно было
document.onkeyup = function(qwerUp)
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2015, 18:42
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Адская смесь jQuery и ванильного js. Вместо стольких if можно switch использовать.
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2015, 18:55
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

Sigizmund2012,
покажеш
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2015, 19:23
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от ArsenInvoker Посмотреть сообщение
Sigizmund2012,
покажеш
Для 2-го куска кода:
$(document).keyup(function(e){
    switch(e.keyCode){
        case 81: $('#quas').css({
            width: '128px',
            height: '128px'
        });
        break;
        case 87: $('#wex').css({
            width: '128px',
            height: '128px'
        });
        break;
        case 69: $('#exort').css({
            width: '128px',
            height: '128px'
        });
        break;
        case 82: $('#invoke').css({
            width: '128px',
            height: '128px'
        });
        break;
    }
});
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2015, 19:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Sigizmund2012, и что это? Код выглядеть лучше не стал.

$(document).on('keydown keyup', function(e) {
    var ids = {69: 'exort', 81: 'quas', 82: 'invoke', 87: 'wex'};
    if(e.keyCode in ids) {
        var value = (128 - 3 * e.type == 'keydown') + 'px';
        $('#' + ids[e.keyCode]).css({height: value, width: value});
    }
});

Последний раз редактировалось ruslan_mart, 10.03.2015 в 19:57.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2015, 20:41
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от Ruslan_xDD Посмотреть сообщение
Sigizmund2012, и что это? Код выглядеть лучше не стал.
Он стал более компактным и читаемым(на мой взгляд), а чтобы ваш код понять, нужно пучок травы скурить. Например строка:
var value = (128 - 3 * e.type == 'keydown') + 'px';

Интуитивно я понимаю, что она делает, но не могли бы вы по шагам объяснить, что именно? И выше в if неявно вызывается for in?
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2015, 23:50
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

Sigizmund2012,
и между прочи он у него не работает
Ответить с цитированием
  #10 (permalink)  
Старый 11.03.2015, 08:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Sigizmund2012
var value = (128 - 3 * e.type == 'keydown') + 'px';
Ну смотри, у нас навешано два события (keyup и keydown), они будут вызывать одну и ту же функцию.
Если событие keydown, то нам нужно подставить 125, а если keyup - то 128, верно?
Вот и подставляем значение:
e.type == 'keydown' -> тут у нас вернёт либо true, либо false, в зависимости от типа события.

3 * e.type == 'keydown' -> в данном случае, наше булево значение будет восприниматься как число, либо 3 * 1, либо 3 * 0, следовательно:

var value = (128 - 3 * e.type == 'keydown') + 'px' -> тут у нас получится либо 125px, либо 128px (всё зависит от типа произошедшего события).

Теперь про объект и ключи:
var ids = {69: 'exort', 81: 'quas', 82: 'invoke', 87: 'wex'}; -> это у нас объект с ключами, ключ должен возвращать e.keyCode.
Оператор in - это не обязательно for..in, этот оператор проверяет существования ключа у объекта/массива. К примеру:

var obj = {a: 'foo'};
alert('a' in obj) //true
alert('b' in obj) //false


Ну вот и всё, если e.keyCode есть в объекте, то подставляем значение объекта с ключём e.keyCode:
$('#' + ids[e.keyCode])

Надеюсь, что понятно объяснил.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование комбинаций If-else в одном скрипте alenka_savage Общие вопросы Javascript 3 23.12.2014 06:10
Jquery, Последовательное выполнение функций разных div в одном скрипте. schnitzer Общие вопросы Javascript 3 29.09.2013 02:49
На сколько пикселей произошел скрол страницы like2dev jQuery 4 11.06.2011 09:53
тест на яве скрипте Vinil Общие вопросы Javascript 1 16.05.2011 20:26
IE 6 сколько можно? zzz Internet Explorer 15 18.08.2009 02:57