Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.09.2012, 21:41
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

[html run] - это я так понимаю чтобы введенный код в сообщении по нажатию на кнопку срабатывал. Подскажите, как это делается?

Последний раз редактировалось platedz, 27.09.2012 в 21:44.
Ответить с цитированием
  #12 (permalink)  
Старый 27.09.2012, 22:02
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

http://javascript.ru/formatting
Ответить с цитированием
  #13 (permalink)  
Старый 28.09.2012, 01:22
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

<!DOCTYPE >
<HTML>
<style>
.cl {width:100px; height: 40px; border: 1px solid red;}
#di {border: 1px solid blue;}
</style>

<BODY>
<div id="idd">
<div class="cl">1</div>
<div class="cl">2</div>
<div>
<script>
topmenu = (function(window) {
var elements = {};

return {
			Sattr: function(name)
				{
				try{ elements = document.querySelectorAll(name); }catch(e){}
					
					return this;
				},

			sob: function(type,block) 
				{
				
					
					for(var i=0; i<elements.length;i++)
						{
							try { 
									try {

										elements[i].addEventListener(type, block, false);

									} catch(e) {

										elements[i].attachEvent("on"+type, block);

									}
								} catch(e){}
						}
					return this;

				}
				}}());
topmenu.Sattr("#idd .cl").sob("click",function(){ 
if(!document.getElementById("di")) {
						var div = document.createElement("div");
							div.id = "di";
							div.innerHTML = "div";
							} else var div = document.getElementById("di");
							this.appendChild(div);
							
});
					var dv = document.createElement("div");
							dv.className = "cl";
							dv.innerHTML = "3";
							document.getElementById("idd").appendChild(dv);
</script>
</BODY>
</HTML>
Ответить с цитированием
  #14 (permalink)  
Старый 28.09.2012, 10:37
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<style>
.cl {width:100px; height: 40px; border: 1px solid red;}
#di {border: 1px solid blue;}
</style>

<div id="idd">
	<button>add</button>
	<div class="cl">1</div>
	<div class="cl">2</div>
<div>

<script>
window.onload = function () {
	document.getElementById('idd').onclick = function (e) {
		e = e || event;
		var target = e.target || e.srcElement;
		if (target == this.children[0]) {
			var el = document.createElement('div');
			el.innerHTML = this.children.length - 1;
			el.className = 'cl';
			this.appendChild(el);
		} else 
		if (target.className == 'cl') {
			if(!document.getElementById("di")) {
				var el = document.createElement("div");
				el.id = "di";
				el.innerHTML = "div";
			} else {
				var el = document.getElementById("di");
			}
			target.appendChild(el);
		}
	}
}
</script>
Ответить с цитированием
  #15 (permalink)  
Старый 28.09.2012, 12:06
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за ответ. Но дело в том, что мне нужно передать элемент в объект, просто для того, чтобы использовать другие методы данного объекта. Кроме прочего это уже используется в очень многих местах. Поэтому, чтобы не переписывать алгоритм, мне бы желательно как-то получить все доступные элеменеты, через метод topmenu.Sattr("#idd .cl") обращаясь к ним тем же способом, что и querySelectorAll. Можно как-то так сделать, в принципе также, как сделано в джиквери в функции Like
Ответить с цитированием
  #16 (permalink)  
Старый 28.09.2012, 13:47
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

предполагаю: нужно использовать MutationEvents
https://developer.mozilla.org/en-US/...lug=DOM_Events
http://habrahabr.ru/post/114244/
иначе живости не получить,
ну либо при добавке нового элемента вещать обработчик на него
Ответить с цитированием
  #17 (permalink)  
Старый 28.09.2012, 16:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Большое спасибо. Возможно, это действительно то, что нужно. Я так понял что MutationEvents отслеживает изменения дом элементов. Но никакой дельной информации - описания по данному поводу не нашел. Ваших ссылок к сожалению оказалось недостаточно, не говоря уже о не знании английского языка. Может кто-нибудь подскажет расширенную информацию по данному вопросу. Также интересует кроссбраузерность и поддрержка хотя бы ie8
Ответить с цитированием
  #18 (permalink)  
Старый 29.09.2012, 03:47
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

В общем, сколько не искал, так и не нашел никакой достаточно подробной информации по MutationEvents. Хотя насколько понял, это относится к дом3 и видимо довольно плохо поддерживается. Может кто-нибудь все-таки подскажет, как можно решить мою проблему с MutationEvents или без.
Ответить с цитированием
  #19 (permalink)  
Старый 29.09.2012, 14:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

не лучший вариант, но можно сделать что-нибудь типа такого
<!DOCTYPE >
<HTML>
<style>
.cl {width:100px; height: 40px; border: 1px solid red;}
#di {border: 1px solid blue;}
</style>

<BODY>
<div id="idd">
<div class="cl">1</div>
<div class="cl">2</div>
<div>
<script>
topmenu = (function(window) {
var elements = {};

return {
			Sattr: function(name)
				{
				try{ elements = document.querySelectorAll(name); }catch(e){}
					
					return this;
				},

			sob: function(type,block) 
				{
				
					
					for(var i=0; i<elements.length;i++)
						{
							try { 
									try {

										elements[i].addEventListener(type, block, false);

									} catch(e) {

										elements[i].attachEvent("on"+type, block);

									}
								} catch(e){}
						}
					return this;

				}
				}}());

document.body.onmousedown = function (){
topmenu.Sattr("#idd .cl").sob("click",function(){ 
if(!document.getElementById("di")) {
						var div = document.createElement("div");
							div.id = "di";
							div.innerHTML = "div";
							} else var div = document.getElementById("di");
							this.appendChild(div);
							
});
}
					var dv = document.createElement("div");
							dv.className = "cl";
							dv.innerHTML = "3";
							document.getElementById("idd").appendChild(dv);
							



</script>
</BODY>
</HTML>
Ответить с цитированием
  #20 (permalink)  
Старый 29.09.2012, 17:52
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо. Попробую. Хотелось правда расширить сам методо sob и/или Sattr, чтобы сделать события живыми. Надо было сразу подумать об этом, я не знал, что не будет с вновь созданными событиями работать.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к элементам с неизвестным id gJam Events/DOM/Window 21 02.08.2012 17:26
JQuery После клонирования по id обращение к элементам клона mirek Общие вопросы Javascript 21 07.06.2012 20:02
как получить доступ к динамически созданным html элементам? korney Элементы интерфейса 8 21.01.2012 22:12
Обращение к элементам другого окна john1123 Events/DOM/Window 2 21.07.2011 18:06
Привязка событий к динамически созданным элементам htaccess Общие вопросы Javascript 5 10.05.2011 22:36