Javascript.RU

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

Кроссбраузерность .onclick = function(){ show_comm(id)}
function close_comm(id) {
	var show_text ="Показать комментарии";
	var show_c = document.getElementById("show_comm_"+id);
	show_c.innerHTML = show_text;
	show_c.onclick =  function(){ show_comm(id)}
	show_c.className = 'contact';
}


В IE работает. А chrome и firefox вместо того чтобы присваивать выполняют функцию show_comm().



ЗЫ: Речь идет о показе и в выше описанной функции скрытии комментариев

Последний раз редактировалось Pulimet, 18.01.2011 в 13:17.
Ответить с цитированием
  #2 (permalink)  
Старый 16.01.2011, 21:09
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<script type="text/javascript">
window.onload = function(){
    document.getElementById('a').onclick = function(){
        var div = document.getElementById('div');
        div.innerHTML = 'show_text'
        div.style.display = (div.style.display == '') ? 'block' : '';
        return false;
    };
};
</script>

<style type="text/css">
div {background: red; display: none; width: 100px; height: 50px;}
</style>
<a href="#" id="a">click</a>
<div id="div"></div>
Ответить с цитированием
  #3 (permalink)  
Старый 16.01.2011, 21:22
Новичок на форуме
Отправить личное сообщение для Pulimet Посмотреть профиль Найти все сообщения от Pulimet
 
Регистрация: 16.01.2011
Сообщений: 9

Спасибо, но в моем случае это решение проблемы не подходит...
Я попробывал
show_c.setAttribute("onclick","show_comm("+id+");" );
но это дает тот же результат...
Ответить с цитированием
  #4 (permalink)  
Старый 16.01.2011, 21:31
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Pulimet
show_c.onclick = function(){ show_comm(id)}
я вам написал пример, проанализируйте как он работает
Сообщение от Pulimet
show_c.setAttribute("onclick","show_comm("+id+");" );
onclick - не является атрибутом!
Ответить с цитированием
  #5 (permalink)  
Старый 16.01.2011, 21:32
Новичок на форуме
Отправить личное сообщение для Pulimet Посмотреть профиль Найти все сообщения от Pulimet
 
Регистрация: 16.01.2011
Сообщений: 9

Сообщение от monolithed
onclick - не является атрибутом!
Но как не странно работает в эксплорере

Вот еще вариант... та же беда.. работает только в эксплорере

if (show_c.addEventListener) {
	    show_c.addEventListener('click', function(){ show_comm(id)}, false);
	} else {
	    show_c.attachEvent('onclick', function(){ show_comm(id) });
	}

Последний раз редактировалось Pulimet, 18.01.2011 в 13:17.
Ответить с цитированием
  #6 (permalink)  
Старый 16.01.2011, 21:36
Новичок на форуме
Отправить личное сообщение для Pulimet Посмотреть профиль Найти все сообщения от Pulimet
 
Регистрация: 16.01.2011
Сообщений: 9

Сообщение от monolithed
я вам написал пример, проанализируйте как он работает
Я проанализировал, но вариант с display не подходит.

Сам сайт это таблица, при нажатии на строку добавляется снизу еще строка с более подробно инфой и в этой дополнительно строке есть возможность кликнуть и просмотреть комментарии и в последствии их спрятать....
Ответить с цитированием
  #7 (permalink)  
Старый 16.01.2011, 21:41
Новичок на форуме
Отправить личное сообщение для Pulimet Посмотреть профиль Найти все сообщения от Pulimet
 
Регистрация: 16.01.2011
Сообщений: 9

Я не могу понять почему
show_c.onclick = function(){ show_comm(id)}
В эксплорере работает как onclick а в других вызывает функцию show_comm().
Ответить с цитированием
  #8 (permalink)  
Старый 16.01.2011, 21:51
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Pulimet
Но как не странно работает в эксплорере
Атрибуты и свойства: модель DOM и отличия в Internet Explorer
Сообщение от Pulimet
Вот еще вариант... та же беда.. работает только в эксплорере
Кросс-браузерное добавление и обработка событий
Сообщение от Pulimet
Я проанализировал, но вариант с display не подходит.
display тут вообще ни причем, почему мой пример работает, а ваш нет?
Сообщение от Pulimet
В эксплорере работает как onclick а в других вызывает функцию show_comm().
странно, что это вообще где-то работает (в Opere поди тоже будет)
Ответить с цитированием
  #9 (permalink)  
Старый 16.01.2011, 23:44
Новичок на форуме
Отправить личное сообщение для Pulimet Посмотреть профиль Найти все сообщения от Pulimet
 
Регистрация: 16.01.2011
Сообщений: 9

Нашел решение:

if (show_c.addEventListener) {                      //Если TRUE значит браузер не  IE
   show_c.onmousedown = function() {show_comm(id);};         // Назначение onclcik для хрома и лисы
} else {
   show_c.onclick=function() {show_comm(id);};                     //Назначение onclcik для IE
}

Chrome и Firefox не работали с onclick но заработали с onmousedown...

Решение нашел здесь:
http://ru.w3support.net/index.php?db=so&id=695265

Работает в IE, Chrome, Firefox

Спасибо за помощь

Последний раз редактировалось Pulimet, 18.01.2011 в 13:21.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('my').load(); Как сделать, чтобы это заработало mycoding Общие вопросы Javascript 25 02.10.2016 23:43
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
хитросплетения Global,контекст,this,Reference kefi Общие вопросы Javascript 109 20.11.2009 23:34
Модуль для работы с геометрией окна JSprog Библиотеки/Тулкиты/Фреймворки 25 31.08.2009 12:54