Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменение onclick (https://javascript.ru/forum/dom-window/17801-izmenenie-onclick.html)

Viral 03.06.2011 12:38

Изменение onclick
 
Подскажите, пожалуйста, как по клику на одну кнопку изменить параметр onclick="" другой кнопки?

document.getElementById(id).onclick="alert('123123')"
не сработал...

nikita.mmf 03.06.2011 12:47

document.getElementById(id).onclick= function(){
//...
}

Saurok 30.09.2011 11:19

Та же проблема
 
У меня такая же проблема

Может я что-то не так делаю, но не работает

function setGarbage(code){
	var setCode = document.getElementById(code);
	setCode.innerHTML.onClick = "function() { setSearch('"+ code +"');}";
}



то что есть (сформировано в документе) и надо заменить реакцию на onClick (прописать функцию setSearch(code) ):

<a onmouseout="setColor('10001','#ffffff');" onmouseover="setColor('10001','yellow');" onclick="setGarbage('10001');" style="cursor: pointer; width: 66px; color: rgb(255, 255, 255);" id="10001">КОРЗИНА</a>


где у меня ошибка не пойму

ksa 30.09.2011 11:28

Цитата:

Сообщение от Saurok
Может я что-то не так делаю

Ты разницу видишь? :)

Правильно
Цитата:

Сообщение от nikita.mmf
document.getElementById(id).onclick= function(){
//...
}

И твоё (неправильное)
document.getElementById(code).innerHTML.onClick = "function() { setSearch('"+ code +"');}";

Saurok 30.09.2011 11:50

Убрал кавычки и innerHTML все равно не работает

function setGarbage(code){
	var setCode = document.getElementById(code);
	setCode.onClick = function() 
	{ 
		setSearch(code);
	}
}



<a onmouseout="setColor('10001','#ffffff');" onmouseover="setColor('10001','yellow');" onclick="setGarbage('10001');" style="cursor: pointer; width: 66px; color: rgb(255, 255, 255);" id="10001">КОРЗИНА</a>


Причем не ругается просто не меняет (смотрю firebug, если он не показывает то должен срабатывать поиск по нажатии кнопки)

Saurok 30.09.2011 12:01

И так не работает:

function setGarbage(code){
	document.getElementById(code).onClick = function() 
	{ 
		setSearch(code);
	}
}


<a onmouseout="setColor('10001','#ffffff');" onmouseover="setColor('10001','yellow');" onclick="setGarbage('10001');" style="cursor: pointer; width: 66px; color: rgb(255, 255, 255);" id="10001">КОРЗИНА</a>

ksa 30.09.2011 14:14

Saurok, я х/з чего ты там лабаешь... :lol:

Вот это работает

<input id='test' type='button' value='Go' />
<script type="text/javascript">
document.getElementById('test').onclick= function(){ 
	alert('Opa!')
}
</script>

Saurok 30.09.2011 14:58

Да вот так не работает (из под функции)

<input id='test' type='button' value='Go' onclik="setOpen()" />
<script type="text/javascript">
function setOpa(){	
	alert('Opa!')
}
function setOpen(){
	document.getElementById('test').onclick= function(){
    	setOpa()
	}
}
</script>



Мне надо что бы кнопка
при первом нажатии кидала в корзину
и переписывалась реакция на второе нажатие
удалить из корзины

Но ты прав я походу перемудрил
из самого яваскрипта (из функции) невозможно переписать реакцию на onClick

В моем случае проще сделать ветвление в первой функции
и проверять была ли нажата кнопка (например читая название)
и тогда уже удалять, а не добавлять снова в корзину

ksa 30.09.2011 15:09

Saurok, тебе стоит почитать статейку...
http://javascript.ru/tutorial/events/crossbrowser

nikita.mmf 30.09.2011 18:28

<input id='test' type='button' value='Go' onclick="setOpen()" />
<script type="text/javascript">
function changeClick(){	
	alert('Changeded Click');
}
function setOpen(){
	alert ("First Click");
	var elem = document.getElementById('test');
	if (!elem) return;
	elem.removeAttribute("onclick");
	elem.onclick = changeClick;
}
</script>


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