Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Кроссбраузерность .onclick = function(){ show_comm(id)} (https://javascript.ru/forum/events/14436-krossbrauzernost-onclick-%3D-function-%7B-show_comm-id-%7D.html)

Pulimet 16.01.2011 20:32

Кроссбраузерность .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().

:help:

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

monolithed 16.01.2011 21:09

<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>

Pulimet 16.01.2011 21:22

Спасибо, но в моем случае это решение проблемы не подходит...
Я попробывал
show_c.setAttribute("onclick","show_comm("+id+");" );
но это дает тот же результат...

monolithed 16.01.2011 21:31

Цитата:

Сообщение от Pulimet
show_c.onclick = function(){ show_comm(id)}

я вам написал пример, проанализируйте как он работает
Цитата:

Сообщение от Pulimet
show_c.setAttribute("onclick","show_comm("+id+");" );

onclick - не является атрибутом!

Pulimet 16.01.2011 21:32

Цитата:

Сообщение от 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 16.01.2011 21:36

Цитата:

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

Я проанализировал, но вариант с display не подходит.

Сам сайт это таблица, при нажатии на строку добавляется снизу еще строка с более подробно инфой и в этой дополнительно строке есть возможность кликнуть и просмотреть комментарии и в последствии их спрятать....

Pulimet 16.01.2011 21:41

Я не могу понять почему
show_c.onclick = function(){ show_comm(id)}
В эксплорере работает как onclick а в других вызывает функцию show_comm().

monolithed 16.01.2011 21:51

Цитата:

Сообщение от Pulimet
Но как не странно работает в эксплорере

Атрибуты и свойства: модель DOM и отличия в Internet Explorer
Цитата:

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

Кросс-браузерное добавление и обработка событий
Цитата:

Сообщение от Pulimet
Я проанализировал, но вариант с display не подходит.

display тут вообще ни причем, почему мой пример работает, а ваш нет?
Цитата:

Сообщение от Pulimet
В эксплорере работает как onclick а в других вызывает функцию show_comm().

странно, что это вообще где-то работает (в Opere поди тоже будет)

Pulimet 16.01.2011 23:44

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

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

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


Часовой пояс GMT +3, время: 23:27.