Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создать и удалить элемент DOM (https://javascript.ru/forum/misc/33698-sozdat-i-udalit-ehlement-dom.html)

lamer 04.12.2012 08:50

Создать и удалить элемент DOM
 
Здравствуйте, здравствуйте, давно не видел не форум не вас уважаемые, к сожалению за это время не на много поумнел в навыках веб-програмирования :)

Помогите плиз доделать задачку, собственно сам код:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<div>
<label>SLOVO:</label>
<input type="text" id="slovo">
</div>
<BR>
<input type="button" value="Create!" onclick="createError();">
<input type="button" value="Dellete!" onclick="delleteError();">
									
<script>
function createError() {
var next = document.getElementById('slovo');
var label = document.createElement('label');
label.id = 'error_id';
label.className = 'error_class';
label.innerHTML = 'ERROR';

if(next.nextSibling) {
    next.parentNode.insertBefore(label, next.nextSibling);
    } else {
    next.parentNode.appendChild(label);
    }
}
</script>
</body>

</html>


У меня всего 2 вопроса:
1. Как дополнить код чтоб при клике на Create! создавался <label> только один рас, т.е. хоть 100 рас кликнешь все равно создаться только один ERROR а не 100 ?

2. Не могу разобраться с removeChild, может из-за того что ночь уже подошла к концу а я ещё и не ложился) собственно второй вопрос, как сделать чтоб при клике на Dellete! сообщение ERROR которое создалось удалилось ?
Видимо тут removeChild не поможет ?

ruslan_mart 04.12.2012 09:25

Цитата:

Сообщение от lamer
1. Как дополнить код чтоб при клике на Create! создавался <label> только один рас, т.е. хоть 100 рас кликнешь все равно создаться только один ERROR а не 100 ?

Флагом:)

var Flag = true;


function createError() {
var next = document.getElementById('slovo');
var label = document.createElement('label');
label.id = 'error_id';
label.className = 'error_class';
label.innerHTML = 'ERROR';
 
if(Flag){
Flag = false;
if(next.nextSibling) {
    next.parentNode.insertBefore(label, next.nextSibling);
    } else {
    next.parentNode.appendChild(label);
    }
}
}


Цитата:

Сообщение от lamer
2. Не могу разобраться с removeChild, может из-за того что ночь уже подошла к концу а я ещё и не ложился) собственно второй вопрос, как сделать чтоб при клике на Dellete! сообщение ERROR которое создалось удалилось ?
Видимо тут removeChild не поможет ?

function delleteError()
{
if(!Flag){
var a = document.getElementById('error_id'); 
document.body.removeChild(a);
Flag = true;
}
}

Skipp 04.12.2012 12:12

lamer,
Ruslan_xDD,
delete пишется с одной l


lamer,
Не делайте лишнего, для таких задач обычно заранее строится структура с элементом в которой будет происходить вывод информации, как уже посоветовали.

ruslan_mart 04.12.2012 12:25

Цитата:

Сообщение от Skipp
Ruslan_xDD,
delete пишется с одной l

Да ладно? :) Я просто скопировал название фу-ции у lamer.

lamer 04.12.2012 20:33

Цитата:

Сообщение от Ruslan_xDD (Сообщение 219451)
Флагом:)

var Flag = true;


function createError() {
var next = document.getElementById('slovo');
var label = document.createElement('label');
label.id = 'error_id';
label.className = 'error_class';
label.innerHTML = 'ERROR';
 
if(Flag){
Flag = false;
if(next.nextSibling) {
    next.parentNode.insertBefore(label, next.nextSibling);
    } else {
    next.parentNode.appendChild(label);
    }
}
}




function delleteError()
{
if(!Flag){
var a = document.getElementById('error_id'); 
document.body.removeChild(a);
Flag = true;
}
}

Спасибо за подсказку, но функция delleteError() не работает, так же как и у меня не работала с removeChild :(

Цитата:

Сообщение от Дзен-трансгуманист (Сообщение 219455)
lamer,
Я бы посоветовал заранее в самой разметке прописать элемент для error, а потом просто вставлять туда описание ошибки или очищать ее.
Не нужно усложнять. :)

Суть в том что не хочеться добавлять в HTML не чего, потому что на сайте КМС стоит там много чего придеться добавлять, в скрипт через админку вставил и все, поэтому приходиться заморочится =)

Цитата:

Сообщение от Skipp (Сообщение 219466)
lamer,
Ruslan_xDD,
delete пишется с одной l


lamer,
Не делайте лишнего, для таких задач обычно заранее строится структура с элементом в которой будет происходить вывод информации, как уже посоветовали.

Я безграмотный, очень приятно что есть такие ЧЕЛОВЕКИ на форуме которые могут поучить грамоте :write:


Часовой пояс GMT +3, время: 09:17.