Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.08.2011, 02:57
Интересующийся
Отправить личное сообщение для inferno3 Посмотреть профиль Найти все сообщения от inferno3
 
Регистрация: 25.08.2011
Сообщений: 11

Не работает display: block под IE
Собственно вот код:
Код:
<style>
.sdan{
	display:none;
}
</style>

<form action="index.php" name="sort" method="post">
<script language="javascript">

if(document.getElementsByClassName == undefined) { 
   document.getElementsByClassName = function(cl) { 
      var retnode = []; 
      var myclass = new RegExp('\\b'+cl+'\\b'); 
      var elem = this.getElementsByTagName('*'); 
      for (var i = 0; i < elem.length; i++) { 
         var classes = elem[i].className; 
         if (myclass.test(classes)) { 
            retnode.push(elem[i]); 
         } 
      } 
      return retnode; 
   } 
}; 
//фиксим ClassName под IE

var IE='\v'=='v'; //проверяю IE ли это
if(IE) {//если да
	function r() {//не отрабатывает дисплей блок в ие
	    var elements = document.getElementsByClassName('sdan');
	    if(document.getElementById('cb').checked){
			for (i = 0; i < elements.length; i++) {
	        elements[i].style.display = 'block';
	    }}else{for (i = 0; i < elements.length; i++) {
	        elements[i].style.display = 'none';
	    }}
	}
}else{


function r() {
	    var elements = document.getElementsByClassName('sdan');
	    if(document.getElementById('cb').checked){
			for (i = 0; i < elements.length; i++) {
	        elements[i].style.display = 'table-row';
	    }}else{for (i = 0; i < elements.length; i++) {
	        elements[i].style.display = 'none';
	    }}
	}
}
function red() {//этот код работает нормально!!!!
	    var elements = document.getElementsByClassName('postdate');
	    if(document.getElementById('cb1').checked){
			for (i = 0; i < elements.length; i++) {
	        elements[i].style.backgroundColor = '#F16969';
	    }}else{for (i = 0; i < elements.length; i++) {
	        elements[i].style.backgroundColor = '';
	    }}
	}	
	</script>
<input type="checkbox" id="cb" onclick="r()" > Показать все заказы <br> <input type="checkbox" id="cb1" onclick="red()" > Подсветить просроченные <br> </form>
Ну что table-row под IE работать не станет это понятно,
но чтобы block ...

По умолчанию класс "sdan" - display: none;
Если изменить "sdan" на display: block то скрипт со второго клика по чекбоксу начинает работать, правда криво как-то. С помощью этого скрипта нужно показать скрытые строки в таблице.
Собственно сабж.

Последний раз редактировалось inferno3, 25.08.2011 в 03:07.
Ответить с цитированием
  #2 (permalink)  
Старый 25.08.2011, 08:33
Аспирант
Отправить личное сообщение для RUVATA Посмотреть профиль Найти все сообщения от RUVATA
 
Регистрация: 08.02.2011
Сообщений: 41

Так они не отрисовываются, или действительно не изменяют состояние ?
дебаг проводил ?
Ответить с цитированием
  #3 (permalink)  
Старый 25.08.2011, 13:23
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

С каких пор IE поддерживает getElementsByClassNamе?
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2011, 22:51
Интересующийся
Отправить личное сообщение для inferno3 Посмотреть профиль Найти все сообщения от inferno3
 
Регистрация: 25.08.2011
Сообщений: 11

Сообщение от nikita.mmf Посмотреть сообщение
С каких пор IE поддерживает getElementsByClassNamе?
С тех самых как функцию на javaskript написали которая создает этот метод
Ответить с цитированием
  #5 (permalink)  
Старый 25.08.2011, 22:54
Интересующийся
Отправить личное сообщение для inferno3 Посмотреть профиль Найти все сообщения от inferno3
 
Регистрация: 25.08.2011
Сообщений: 11

Сообщение от RUVATA Посмотреть сообщение
Так они не отрисовываются, или действительно не изменяют состояние ?
дебаг проводил ?
первый чекбокс не работает, не меняет дисплэй в ИЕ
Дебаг по данному скрипту ничего не дал
Второй чекбокс отрабатывает и подкрашивет как надо.(просто для примера привел)
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2011, 00:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

всё работает, только надо бы знать перед написанием скрипта, что select.style.display === "inline", а не "block"

и еще : он ругается, когда имя переменной совпадает с id элемента.

<select id="a" style="display:none"><option>a</option></select>
<script>
b = document.getElementById('a');
b.style.display = "inline";
</script>


т.е. если бы я выбрал 'a', а не 'b', то он бы начал плеваться.
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2011, 21:40
Интересующийся
Отправить личное сообщение для inferno3 Посмотреть профиль Найти все сообщения от inferno3
 
Регистрация: 25.08.2011
Сообщений: 11

Может кто ни будь предложет более изящный метод скрытия нескольких строк таблицы по клику на чекбокс?
Я заменил класс на id в виде 1,2,3,4....29, id в ИЕ должен отрабатываться нормально.
теперь все эти строки нужно скрыть по чекбокчу, подскажите как лучше их перебрать?
что не так я написал?
function r() {
	if(document.getElementById('cb').checked){
	for (i=0; i<29;i++){
		var y=0;
		getElementsByid(y).style.display = 'table-row';
		y++;
	}
}else{
	for (i=0; i<29;i++){
		var y=0;
		getElementsByid(y).style.display = '';
		y++;
	}
}

Последний раз редактировалось inferno3, 26.08.2011 в 23:50.
Ответить с цитированием
  #8 (permalink)  
Старый 27.08.2011, 04:27
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Опечатка в пятой строчке)
А так вроде всё хорошо...
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2011, 04:53
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

for (i=0; i<29;i++){
*!*
	var *!* y=0; */!*
	*!*document.getElementById*/!*( *!* y */!* ).style.display = 'table-row';
*/!*
	y++;
}
Посмотрите сами на свою ошибку

Последний раз редактировалось devote, 27.08.2011 в 05:00.
Ответить с цитированием
  #10 (permalink)  
Старый 27.08.2011, 14:40
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Хи) Чёрт, я тоже проглядел) Естественно
А зачем товарищу y, пусть i юзает напрямую)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
коррекция кода harek13 jQuery 1 16.12.2010 17:13
скрипт на сайт под Джумлой, не работает в FF matysse Элементы интерфейса 1 11.10.2010 21:14
Не работает простой show-hide под IE7 varlo jQuery 1 16.12.2009 17:18
Скрипт меню работает только под IE7 и выше TAILER Internet Explorer 1 31.08.2009 13:21
GetVariable (flash) не работает под FireFox Vodan Общие вопросы Javascript 2 21.12.2008 17:26