24.08.2012, 14:54
|
|
Профессор
|
|
Регистрация: 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.
|
|
24.08.2012, 14:56
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
не имею в виду, чтоб удалила последний элемент в body, а именно удалила последнее действие!!!
|
|
24.08.2012, 15:08
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
dmitry111,
Cоздайте объект с записью последних действий ?
|
|
24.08.2012, 15:12
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
dmitry111, добавьте к создаваемому div-у id и записывайте таковой в переменную (или массив), в последствии доставайте id из переменной (или последний элемент из массива) и удаляйте элемент...
если нужна история создания элементов пообширнее, то используйте, как предложил Deff, объект
|
|
24.08.2012, 15:56
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от dmitry111
|
не имею в виду, чтоб удалила последний элемент в body, а именно удалила последнее действие!!!
|
все дивы можно поместить в отдельный див и удалять последний созданный див из него
|
|
24.08.2012, 16:02
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
не могу понять как это можно реализовать с помощью созданного объекта.
Из примера выше действие функции заключается в 3-х составляющих: создать элемент, создать свойства для этого элемента и поместить его в body.
То есть мне нужно создать объект с 3-мя литералами. И Если мне нужно удалить действие функции - удалить этот объект?
Если не затруднит, покажите какой-нибудь пример.
lord2kim,
способ, описанный вами, понятен. Но мне это надо для функции, которая не элементы создает. Пример выше просто пример
|
|
24.08.2012, 16:03
|
sinistral
|
|
Регистрация: 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>
|
|
24.08.2012, 16:04
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
bes,
вы издеваетесь
|
|
24.08.2012, 16:05
|
|
Профессор
|
|
Регистрация: 26.03.2012
Сообщений: 823
|
|
melky,
вот , это мне нужно!!! Спасибо!
|
|
24.08.2012, 16:18
|
|
Профессор
|
|
Регистрация: 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>
|
|
|
|