Javascript.RU

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

Посоветуйте как сделать..
Вот есть функция, которая создает новые элементы, предположим так:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>выпвып</title>
</head>

<body>
<button>создать новый элемент</button>
<!--<button>удалить последнее действие функции go()</button>-->
<script>

    var w = window.innerWidth - 20;
    var h = window.innerHeight - 20;

    function go() {
        function colorw() {
            var r = Math.floor(Math.random()*256);
            var g = Math.floor(Math.random()*256);
            var b = Math.floor(Math.random()*256);

            return "rgb(" + r + ", " + g + ", " + b + ")";
        }
        var a = document.createElement("div");
        a.style.width = "20px";
        a.style.height = "20px";
        a.style.position = "absolute";
        a.style.borderRadius = "5px";
        a.style.top = Math.round(Math.random()*h) + "px";
        a.style.left = Math.round(Math.random()*w) + "px";
        a.style.background = colorw();
        document.body.appendChild(a);

    }

    var b = document.getElementsByTagName("button")[0];
    b.addEventListener("click", go);

</script>
</body>
</html>


При клике на кнопку, создается новый элемент.

Хотелось бы написать функцию, которая удаляла предыдущее действие вышенаписанной функции.

Подскажите, как это сделать?

Последний раз редактировалось dmitry111, 24.08.2012 в 15:03.
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2012, 14:56
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

не имею в виду, чтоб удалила последний элемент в body, а именно удалила последнее действие!!!
Ответить с цитированием
  #3 (permalink)  
Старый 24.08.2012, 15:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dmitry111,
Cоздайте объект с записью последних действий ?
Ответить с цитированием
  #4 (permalink)  
Старый 24.08.2012, 15:12
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

dmitry111, добавьте к создаваемому divid и записывайте таковой в переменную (или массив), в последствии доставайте id из переменной (или последний элемент из массива) и удаляйте элемент...
если нужна история создания элементов пообширнее, то используйте, как предложил Deff, объект
Ответить с цитированием
  #5 (permalink)  
Старый 24.08.2012, 15:56
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dmitry111
не имею в виду, чтоб удалила последний элемент в body, а именно удалила последнее действие!!!
все дивы можно поместить в отдельный див и удалять последний созданный див из него
Ответить с цитированием
  #6 (permalink)  
Старый 24.08.2012, 16:02
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

не могу понять как это можно реализовать с помощью созданного объекта.

Из примера выше действие функции заключается в 3-х составляющих: создать элемент, создать свойства для этого элемента и поместить его в body.

То есть мне нужно создать объект с 3-мя литералами. И Если мне нужно удалить действие функции - удалить этот объект?




Если не затруднит, покажите какой-нибудь пример.




lord2kim,

способ, описанный вами, понятен. Но мне это надо для функции, которая не элементы создает. Пример выше просто пример
Ответить с цитированием
  #7 (permalink)  
Старый 24.08.2012, 16:03
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

можно просто записывать в массив добавленные элементы. какие нафиг объекты\родители?

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>выпвып</title>
</head>

<body>
<button>создать новый элемент</button>
<button>удалить все</button>
<button>удалить последний</button>
<!--<button>удалить последнее действие функции go()</button>-->
<script>

    var w = window.innerWidth - 20;
    var h = window.innerHeight - 20;
    var els = [];

    function go() {
        function colorw() {
            var r = Math.floor(Math.random()*256);
            var g = Math.floor(Math.random()*256);
            var b = Math.floor(Math.random()*256);

            return "rgb(" + r + ", " + g + ", " + b + ")";
        }
        var a = document.createElement("div");
        a.style.width = "20px";
        a.style.height = "20px";
        a.style.position = "absolute";
        a.style.borderRadius = "5px";
        a.style.top = Math.round(Math.random()*h) + "px";
        a.style.left = Math.round(Math.random()*w) + "px";
        a.style.background = colorw();
        document.body.appendChild(a);
        els.push(a);
    }
  
    function remove_one () {
        if (els.length) {
            var el = els.pop();
            el.parentNode.removeChild(el);
        }
    }
  
    function remove_all () {
        while (els.length) {
          remove_one();
        }
    }
    

    var b = document.getElementsByTagName("button")[0];
    b.addEventListener("click", go, false);

    var b = document.getElementsByTagName("button")[1];
    b.addEventListener("click", remove_all, false);
  
    var b = document.getElementsByTagName("button")[2];
    b.addEventListener("click", remove_one, false);
</script>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 24.08.2012, 16:04
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

bes,

вы издеваетесь
Ответить с цитированием
  #9 (permalink)  
Старый 24.08.2012, 16:05
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

melky,

вот , это мне нужно!!! Спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 24.08.2012, 16:18
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dmitry111
bes,

вы издеваетесь
Так-то нет

<button>создать новый элемент</button>
<button>удалить все</button>
<button>удалить последний</button>
<div id="div"></div>

<script>
window.onload = function () {
	var div = document.getElementById('div');
	var w = window.innerWidth - 20;
	var h = window.innerHeight - 20;

	function colorw() {
		var r = Math.floor(Math.random()*256);
		var g = Math.floor(Math.random()*256);
		var b = Math.floor(Math.random()*256);
		return "rgb(" + r + ", " + g + ", " + b + ")";
	}
	
	function create()  {
		var a = document.createElement("div");
		a.style.width = "20px";
		a.style.height = "20px";
		a.style.position = "absolute";
		a.style.borderRadius = "5px";
		a.style.top = Math.round(Math.random()*h) + "px";
		a.style.left = Math.round(Math.random()*w) + "px";
		a.style.background = colorw();
		div.appendChild(a);
	}
	
	document.body.children[0].onclick = function () {
		create();
	}
	
	document.body.children[1].onclick = function () {
		div.innerHTML = '';
	}
	
	document.body.children[2].onclick = function () {
		if (div.lastChild) {
			div.removeChild(div.lastChild);
		}
	}
	
}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как лучше сделать виджет? comentator Элементы интерфейса 0 25.03.2011 08:44
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14