Javascript.RU

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

Клик срабатывает без щелчка на кнопке - почему?..
Описал объект таким образом:
var main = {
        inputTable: document.getElementById('container');

	init: function () {
		this.addButton( 'Run Task 1',this.task1(this.inputTable) );
	},

	task1: function(table) {
       // здесь подготовка контейнера для вывода и вывод
		document.body.appendChild(newTableDOM);
	},

	addButton: function(butName,butClick) {
		var newBut=document.createElement('BUTTON');
		newBut.innerHTML=butName;
		newBut.onclick=butClick;
		document.body.appendChild(newBut);
	}
};

main.init();


при отработке кода в браузере (Хром) кнопка добавляется в документ, и сразу же выполняется код, который предназначен на onclick этой кнопки, без клика по добавленной кнопке. Изначально необходимо показывать собранный контейнер по щелчку на кнопке.

ЧЯДНТ?..
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2012, 14:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от deivan
this.task1(this.inputTable)
потому что вы его сразу вызываете, а нужно делать так:
this.addButton( 'Run Task 1',this.task1 );

или так:
this.addButton( 'Run Task 1',(function(self){
    return function(){
        self.task1(self.inputTable)
    }
})(this) );
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 13.08.2012 в 14:27.
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2012, 14:28
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 4,724

this.task1(this.inputTable)
Берётся this.task1...
и вызывается с параметром this.inputTable.
В обработчик же onclick передаётся уже результат вызова.(в данном случае undefined, т.к. в this.task1 нет return)
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 13.08.2012, 14:42
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

ага, понятно! спасибо...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 09:47
дать клик по кнопке alerzo Events/DOM/Window 3 10.09.2011 17:21
клик по кнопке alerzo Events/DOM/Window 1 20.08.2011 23:39
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41
Почему скрипт срабатывает только после обновления страницы? Randomizer jQuery 2 01.09.2010 19:01