Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Опять как удалить див по которому кликнул (https://javascript.ru/forum/misc/30160-opyat-kak-udalit-div-po-kotoromu-kliknul.html)

alex2012 26.07.2012 13:26

Опять как удалить див по которому кликнул
 
<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info"></div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="javascript:addRecord5(984)" value="Отправить" return="" false=""/>
</p>
</div>
<div id="clear"/>

<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info"></div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="javascript:addRecord5(985)" value="Отправить" return="" false=""/>
</p>
</div>
<div id="clear"/>



так выглядит код js кнопки
delll =  + records[i].id;
                        var cnopca = "<input type='button' name='submit' onclick='javascript:addRecord5("+ records[i].id +")' value='Отправить' return false>";                        
                        var del_st  = createElement("p");
                        del_st.innerHTML = cnopca;
                        divinfo.appendChild(del_st);
						divResult.appendChild(divinfo);

а так код js удаления дива
var del = document.getElementById('info');
                        var avatar_del = document.getElementById('avatar'); 
                        var parent = document.getElementById('divResult'); 
                        parent.removeChild(del); 
                        parent.removeChild(avatar_del);


Проблема в том что удаляется всегда первый элемент а мне надо чтобы удалялся id="avatar" и id="info" возле которого нажата кнопка
проблема в том что я не могу поставить this в onclick='javascript:addRecord5("+ records[i].id +")' так как передаю id значение + records[i].id +
Подскажите как обойти проблему

devote 26.07.2012 13:31

<div onclick="this.parentNode.removeChild(this)">kjasdjh asdjkh</div>

alex2012 26.07.2012 13:39

Хорошо но как мне this в эту кнопку прикрутить
<input type='button' name='submit' onclick='javascript:addRecord5("+ records[i].id +")'  value='Отправить' return false>";

Dim@ 26.07.2012 13:42

alex2012,
что за дурная привычка писать
onclick='javascript:..

alex2012 26.07.2012 13:42

как правильно?

Dim@ 26.07.2012 13:45

alex2012,
простой вызов функции как в примере
<input type='button' value="Удали меня" onclick="rem(this)">
<script type='text/javascript'>
function rem(th){
 th.parentNode.removeChild(th);
}
</script>

lord2kim 26.07.2012 13:46

alex2012, первая проблема уже в том, что по вашему описанию у вас куча элементов с одинаковыми id...чего быть не должно
к тому же что такое
<div id="clear"/>
? кучу div-ов открываете, но не закрываете?

devote 26.07.2012 13:47

var cnopca = '<input type="button" name="submit" onclick="addRecord5(\'"+ records[i].id +"\', this)" value="Отправить">';

lord2kim 26.07.2012 13:51

<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info"></div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="document.body.removeChild(this.parentNode.parentNode);" value="Отправить">
</p>
</div>

 
<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info"></div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="document.body.removeChild(this.parentNode.parentNode);" value="Отправить">
</p>
</div>

буит робить но без всяких <div id="clear"/>

alex2012 26.07.2012 13:51

если вы имеете виду id="iavatar"и id="info" то они выводятся в цикле из базы данных. И как они могут быть разные в этом случае ?

alex2012 26.07.2012 13:52

спасибо сейчас попробую

Deff 26.07.2012 13:53

<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info">Инфо1</div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="addRecord5(984,this)" value="Отправить" return="" false=""/>
</p>
</div>
<div id="clear"/>

<div id="divResult" style=" color:red;">
  <div id="avatar"></div>
  <div id="info">Инфо</div>
  <div id="coment" class="divRecord"></div>
  <p>
    <input type="button" name="submit" onclick="addRecord5(987,this)" value="Отправить" return="" false=""/>
  </p>
</div>
<div id="clear"/>

<script type="text/javascript">
function addRecord5(Num,ThiS) {

   var del= ThiS.parentNode.parentNode.getElementsByTagName('div')[1]
    del.parentNode.removeChild(del);

}
</script>

lord2kim 26.07.2012 13:57

Цитата:

Сообщение от alex2012 (Сообщение 191764)
если вы имеете виду id="iavatar"и id="info" то они выводятся в цикле из базы данных. И как они могут быть разные в этом случае ?

ну как вы водите все это из БД...на каждой итерации цикла ставьте так
'id="iavatar"+i'


Deff, неробит :blink:

Deff 26.07.2012 14:00

Цитата:

Сообщение от lord2kim
Deff, неробит

Поправил пост #12

devote 26.07.2012 14:01

Цитата:

Сообщение от Deff
В Опере Пашет - щас проверю

в какой? у меня не пашет 11.64

devote 26.07.2012 14:02

решение IE8+
<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info">Инфо</div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="addRecord5(984,this)" value="Отправить" return="" false=""/>
</p>
</div>
<div id="clear"/>
 
<div id="divResult" style=" color:red;">
<div id="avatar"></div>
<div id="info">Инфо</div>
<div id="coment" class="divRecord"></div>
<p>
<input type="button" name="submit" onclick="addRecord5(987,this)" value="Отправить" return="" false=""/>
</p>
</div>
<div id="clear"/>
 
<script type="text/javascript">
function addRecord5(Num,ThiS) {
 
   var del= ThiS.parentNode.parentNode.querySelector('#info');
    del.parentNode.removeChild(del);
 
}
</script>

Deff 26.07.2012 14:15

Поправил пст #12

alex2012 26.07.2012 14:23

сделал так
взял то что мне посоветовал
devote
var cnopca = '<input type="button" name="submit" onclick="addRecord5(\'"+ records[i].id +"\', this)" value="Отправить">';



и Dim@

th.parentNode.removeChild(th);

работает правильно единственное что не так, это то что исчезает только кнопки. что не так я сделал ?

lord2kim 26.07.2012 14:27

alex2012,
у вас
parentNode = тег P
parentNode.parentNode = тег div с id="divResult"

alex2012 26.07.2012 14:50

сделал так не срабатывает
th.parentNode.parentNode.removeChild(th);

Deff 26.07.2012 14:57

alex2012,
Пробуйте пост 12

bes 26.07.2012 14:59

Раз по клику можно сделать через target
<div class="divResult" style=" color:red;">
	<div class="avatar">11</div>
	<div class="info">12</div>
	<div id="coment" class="divRecord">13</div>
	<p>
		<input type="button" name="submit" onclick="javascript:addRecord5(984)" value="Отправить" return="" false=""/>
	</p>
</div>
<div id="clear"/>

<div class="divResult" style=" color:red;">
	<div class="avatar">11</div>
	<div class="info">12</div>
	<div id="coment" class="divRecord">13</div>
	<p>
		<input type="button" name="submit" onclick="javascript:addRecord5(984)" value="Отправить" return="" false=""/>
	</p>
</div>
<div id="clear"/>

<script>
document.body.onclick = function (e) {
	e = e || event;
	var target = e.target || e.srcElement;
	
	if (target.name == 'submit') {
		var parent = target.parentNode.parentNode;
		if (parent.children[0].className == 'avatar') {
			parent.removeChild(parent.children[0]);
		}
		if (parent.children[0].className == 'info') {
			parent.removeChild(parent.children[0]);
		}
		return;
	} 
	
	if (target.className == 'info' || target.className == 'avatar') {
		target.parentNode.removeChild(target);
	} 

}
</script>

PS: что именно нужно удалять возможно не понял, так как не вчитывался

alex2012 26.07.2012 15:36

Спасибо всем всё заработало

alex2012 26.07.2012 15:40

Только один вопрос
в строке
var del= ThiS.parentNode.parentNode.getElementsByTagName('div')[1]


вот это что означает
getElementsByTagName('div')[1]

так как я сделал вот так
var del= th.parentNode.parentNode;

и заработало

Deff 26.07.2012 15:43

alex2012,
Хм - выложите полную функцию откель мну зает - что есть th

Если пользоваться исходной - как есть - тож должно работать

lord2kim 26.07.2012 15:43

alex2012,
var del= ThiS.parentNode.parentNode.getElementsByTagName('div')[1]

ссылка на div с id="info"
var del= th.parentNode.parentNode;
ссылка на div с id="divResult"


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