Javascript.RU

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

Помогите! Как вызвать суперфункцию!
Я нуб, нужен совет! Скрипт не то, что не работает, я просто боюсь его запускать, не узнав точно безопасно ли это!

function TableTool() {
 return {
  supermethod : function() {
    // super action!
  },

  getTextField : function() {
   return '<input type="text" onblur="TableTool.supermethod()">';
  }
 }
}

var T = TableTool();
document.writeln(T.getTextField());


Интересует момент onblur="TableTool.supermethod()": могу ли я в обработчик события посадить функцию-метод из "класса" TableTool?

Последний раз редактировалось Фархад Рахимжанов, 20.11.2012 в 19:54.
Ответить с цитированием
  #2 (permalink)  
Старый 21.11.2012, 06:59
Интересующийся
Отправить личное сообщение для Фархад Рахимжанов Посмотреть профиль Найти все сообщения от Фархад Рахимжанов
 
Регистрация: 20.11.2012
Сообщений: 11

Блина, вы так мне ничего и не подсказали!
Но я подумал о таком:

...
getField() : function(m) {
 return '<input onblur="' + m + '.supermethod()" ... >';
}
...
var T = TableTool();
document.writeln(T.getField('T'));


PS: не думал, что с ЧЮ тут будет так плохо.
Ответить с цитированием
  #3 (permalink)  
Старый 21.11.2012, 07:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

На самом деле работать с dom как с текстом не рекомендуется(только в особых случаях) - это раз.
Использовать document.write также можно только в особых случаях(при загрузке страницы) - это два.

Делается всё это на самом деле упрощённо так:
<body>
<script>
function TableTool() {
	return {
		supermethod : function() {
			alert(this.value)
		},

		getTextField : function( text ) {
			var input = document.createElement('input');
			input.type = 'text';
			input.onblur = this.supermethod;
			input.value = text;
			return input
		}
	}
}
 
var T = TableTool();
document.body.appendChild(T.getTextField('test'));
document.body.appendChild(T.getTextField('test2'));
</script>
<body>
__________________
29375, 35

Последний раз редактировалось Aetae, 21.11.2012 в 07:24.
Ответить с цитированием
  #4 (permalink)  
Старый 21.11.2012, 08:55
Интересующийся
Отправить личное сообщение для Фархад Рахимжанов Посмотреть профиль Найти все сообщения от Фархад Рахимжанов
 
Регистрация: 20.11.2012
Сообщений: 11

Aetae, спасибо, теперь понятно касаемо вставки в обработчик события внутреннего метода "класса".

По поводу работы с DOM как с текстом.
По каким причинам не рекомендуется, помимо морально-этических?
Ответить с цитированием
  #5 (permalink)  
Старый 21.11.2012, 13:17
Интересующийся
Отправить личное сообщение для Фархад Рахимжанов Посмотреть профиль Найти все сообщения от Фархад Рахимжанов
 
Регистрация: 20.11.2012
Сообщений: 11

Сообщение от Дзен-трансгуманист
Ну, для начала, классом тут и не пахнет. Функция у вас не работает как конструктор, а объекты, которые она возвращает, не будут иметь каких-либо унаследованных свойств.
http://javascript.ru/tutorial/object...itance#factory
Ответить с цитированием
  #6 (permalink)  
Старый 21.11.2012, 16:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Сообщение от Фархад Рахимжанов Посмотреть сообщение
По поводу работы с DOM как с текстом.
По каким причинам не рекомендуется, помимо морально-этических?
Удобство и простота. Ну и выигрыш скорости небольшой. Работа с текстом только на первый взгляд кажется проще и удобнее. Любая работа над чем-то сложнее домашней странички превратится в ад.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 21.11.2012, 18:06
Интересующийся
Отправить личное сообщение для Фархад Рахимжанов Посмотреть профиль Найти все сообщения от Фархад Рахимжанов
 
Регистрация: 20.11.2012
Сообщений: 11

А если в ячейку таблицы нужно вставить input, затем еще какой то текст, другие теги типа img (например в ячейку нужно вставить поле типа Date с т.н. Datepicker)? Тоже делать это все через document.createElement()?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать eval в контексте другой функции для доступа к ее локальным переменным? Почемучкин Общие вопросы Javascript 8 29.10.2012 22:31
InnerHTML почему-то работает не так, как хотелось бы. помогите Dima00782 Общие вопросы Javascript 2 13.06.2010 21:17
Помогите, незнаю как и чем считать и отправить данные с формы Arfey Общие вопросы Javascript 3 31.05.2010 16:01
как вызвать функцию название которой находиться в строке dark Общие вопросы Javascript 3 14.10.2009 13:02
как вызвать функцию? pumpurumer jQuery 2 27.08.2009 19:39