Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > удаление стилей у элементов.


Автор: Serious2008 13.11.2012, 09:27
Здравствуйте, мне нужна небольшая помощь с удалением стилей. 

У меня через for идём обход div-ов.
И как бы в самом начале мне нужно очистить от стилей элементы. Я пытался вот так.
t[i].style = " "; 
Но он не хочет, хром пишет, что нельзя чтобы было null. Подскажите пожалуйста, как можно все именно прописанные стили убить?

Автор: Aliance 13.11.2012, 10:04
Не знаю зачем уж такая задача встала, но можно ее решить обнулив свойство cssText:
Код

t[i].style.cssText = '';​​​​​

Автор: Serious2008 13.11.2012, 10:21
Aliance, 
вот как хром ругается на твоё
Код

Uncaught SyntaxError: Unexpected token ILLEGAL 

когда ставлю вот такое
  t[i].style.display = "block "; 
то не ругается.

Автор: Aliance 13.11.2012, 11:02
У меня хром не ругается.
http://jsfiddle.net/Aliance/Ssacs/

Что происходит у тебя я сказать не могу, ведь код ты скрываешь.

Автор: Serious2008 13.11.2012, 12:45
Код

 for (var i = 0; i <= 68; i++) {
     // t[i].style.display = "block "; 
      t[i].style.cssText = " ";​​​​​
     if (form.cat.value == 4)
        {
            if( i == 64)
            {
        
            }
            else if(i == 65)
            {
    
            }
            else if(i == 16)
            {
    
            }
            else if(i == 17)
            {
    
            }
            
            else if(i == 18)
            {
    
            }
            else if(i == 10)
            {
    
            }
            else if(i == 9)
            {
    
            }
            else if(i == 24)
            {
    
            }
            else if(i == 27)
            {
    
            }
            else
            {
            
            t[i].style.display = "none"; 
            }
            
        }
}


Ну вот как-то так. С block всё нормально работает и работало, но если ставить block, то вёрстка слетает.

Автор: Aliance 13.11.2012, 12:55
 smile что в массиве t я должен сам додумать?

Автор: Serious2008 13.11.2012, 12:58
Ну и таких 77-тров
Код

       <tr  id="type0">
                  <td class="key">Жилая площадь</td>
                  <td><input type="text" name="live_space" size="10" class="inputbox" maxlength="10" value="" />&nbsp;м&sup2;</td>
                </tr>
    <tr  id="type29">
                  <td class="key">Полезная площадь</td>
                  <td><input type="text" name="live_space" size="10" class="inputbox" maxlength="10" value="" />&nbsp;м&sup2;</td>
                </tr>
     <tr  id="type24">
        <td class="key">Земельный участок</td>
        <td><input type="text" name="zemeln_uchastok" size="10" class="inputbox" maxlength="20" value="" />&nbsp;м&sup2;</td>
    </tr>

Код

 for (var i = 0; i < 77; i++) {
        
      t[i] = document.getElementById('type' + i); 

    }

Автор: Aliance 13.11.2012, 13:12
Не пиши больше так никогда  smile 

Код

<table id="myTable">
    <tr style="border: 1px solid;"><td>ololo</td></tr>
    <tr style="border: 1px solid;"><td>ololo</td></tr>
    <tr style="border: 1px solid;"><td>ololo</td></tr>
    <tr style="border: 1px solid;"><td>ololo</td></tr>
    <tr style="border: 1px solid;"><td>ololo</td></tr>
</table>
<button id="btn">click me</button>​​​

Код

document.getElementById('btn'​).onclick = function() {
    var trs = document.getElementById('myTable').getElementsByTagName('tr');
    for (var i in trs) {
        trs[i].style.cssText = '';
    }
}​

Автор: Serious2008 13.11.2012, 13:28
Aliance, 
мне нужно чтобы определённый tr-ы исчезали, по этому такой вариант не прокатит.

Автор: Aliance 13.11.2012, 14:16
Значит назначь им class и воспользуйся getElementsByClassName (работает не везде, эмуляцию в гугле найти легко). Или воспользуйся jQuery. Но создавать эмуляцию node list в цикле мне видится не самым разумным решением.

Проблема решена или все еще не понятно что-то?

Автор: Serious2008 13.11.2012, 14:33
Aliance, 
нет не решена, ладно сейчас попробую сделать что-нибудь, правда с классом, вместо id.

Автор: Aliance 13.11.2012, 14:44
Не знаю как ты делаешь, но все должно работать даже при таком способе получения списка нод:
http://jsfiddle.net/6x3Yd/

Автор: Serious2008 13.11.2012, 15:10
Переделал под этот стиль. И теперь вот так он ругается

Код

 trs[i].style.cssText = '';
Uncaught TypeError: Cannot read property 'style' of null

Автор: Aliance 13.11.2012, 15:13
Что ты переделал, как я могу это узнать, без кода? Когда люди уже поймут, что тут не экстрасенсы?  smile 

Тебе ничего переделывать и не нужно, все должно работать итак. Выложи готовый скрипт в интернет и дай ссылку. Или полностью скопируй код на jsfiddle

Автор: Serious2008 13.11.2012, 15:20
Aliance, 
Блин, тут много быдлокодинга. Вообще функция select это
http://jsfiddle.net/7e83C/

Добавлено через 20 секунд
Которая срабатывает при выборе категории

Автор: Aliance 13.11.2012, 15:50
Ну асень пень у тебя не работает ничего, ты в js пушишь в массив элементы с id="rowN", а самих этих элементов в html нет. У тебя есть с id="typeN", ты бы хоть не копипастил тупо мой код, а понимал что там написано и зачем.

Автор: Serious2008 13.11.2012, 18:08
Aliance, 

Сори, я просто свой этот код писал примерно месяца 3 назад, и проблем с вёрсткой у людей не было, сейчас полез менять, ну и не помнил уже код.
Спасибо, что обратили внимание, на мою невнимательность.

И сейчас эта ошибка, она из-за того что некоторых номеров уже нет и соответственно получить он не может их, тоже мой недосмотр, или кто-то так убирал лишнее.
Я сейчас алертами всё тестирую, и делаю исключение на случае когда нет этих i

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)