Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2012, 12:59
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Какие замечания можете привести по представленным функциям
function hasClass(node, cls) {
    return node.className != '' ? (' ' + node.className + ' ').indexOf(' ' + cls + ' ') > -1 : false;
}

function addClass(node, cls) {
    if (!hasClass(node, cls)) {
        node.className =  node.className.trim() + ' ' + cls;
        return true;
    }
    return false;
}

function removeClass(node, cls) {
    if (hasClass(node, cls)) {
        node.className = ((' ' + node.className + ' ').replace(' ' + cls + ' ', ' ')).trim();
        return true;
    }
    return false;
}
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2012, 13:11
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Например первое можно переписать так:

function hasClass(node, cls) {
    return !node.className ? false : (' ' + node.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2012, 13:15
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Для hasClass
если класс у элемента всего один => "superClass", то hasClass не найдет в нем вхождение ' ' + cls + ' '. Нужно проверять из скольки слов состоит класс. Даже если он состоит из трех - надо учесть, что он может быть слева или справа. Yeah?
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2012, 13:16
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Сообщение от Антон Крамолов Посмотреть сообщение
Например первое можно переписать так:

function hasClass(node, cls) {
    return !node.className ? false : (' ' + node.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
Да, клево подметил
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2012, 13:16
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Блин! Втупил, ты ведь для этого и прибавил по пробелу слева и справа... Извини.
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2012, 13:18
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Для addClass не вижу смысла тримить node.className.trim(), потому что во первых ты чаще всего будешь присылать без пробелов, во вторых если пробелов будет два и более, класс все равно добавится, и будет нормально работать.
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2012, 13:26
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

наверное
Ответить с цитированием
  #8 (permalink)  
Старый 13.04.2012, 13:27
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

честно не разу даже не проверял
Ответить с цитированием
  #9 (permalink)  
Старый 13.04.2012, 13:29
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Сообщение от Антон Крамолов Посмотреть сообщение
честно не разу даже не проверял
Я проверил.
Ответить с цитированием
  #10 (permalink)  
Старый 13.04.2012, 13:34
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

document.querySelector && document.querySelectorAll
какую обертку для них лучше всего написать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55