Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2010, 07:58
Новичок на форуме
Отправить личное сообщение для kireyev Посмотреть профиль Найти все сообщения от kireyev
 
Регистрация: 21.09.2010
Сообщений: 5

Не удается удалить элемент
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" href = "style.css" type="text/css" media="screen">
<title></title>
<script type="text/javascript">
	var x = 1;
	function addobject() {
	x++
	var position = document.getElementById('position')
	
	var div1 = document.createElement('div')
	div1.innerHTML = 'Размеры позиции №'+x+', м:'
	position.appendChild(div1)

	var input1 = document.createElement('input')
	input1.setAttribute('type', 'text')
	input1.setAttribute('name', 'width'+x)
	position.appendChild(input1)
	input1.className = 'zakaz_right'

	var input2 = document.createElement('input')
	input2.setAttribute('type', 'text')
	input2.setAttribute('name', 'lenght'+x)
	position.appendChild(input2)
	input2.className = 'zakaz_right'
	}
	
	function deleteobject() {
	var position = document.getElementById('position')
	var width = document.getElementsByName('width2')
	position.removeChild(width)
	}</script>
</head>
<body>
	<h1>Оформление нового заказа</h1>
	<form id="zakaz_form" name = "form" method = "get" action = "index.php">
	
	<div class="zakaz_left">Заказчик: <a href="#">Выбрать</a></div>
	
	<div class="zakaz_left">Материал: <a href="#">Выбрать</a></div>
	
	<div id="position">
		<div class="zakaz_left">Размеры позиции №1, м:</div>
		<input class="zakaz_right" type="text" name="width1"/><input class="zakaz_right" type="text" name="lenght1"/>
	</div>
	
	<input type="button" value="+ позиция" onclick="addobject()"/>
	<input type="button" value="- позиция" onclick="deleteobject()"/>
	<div class="zakaz_left">Общий расход материала, п.м:</div>
	<input class="zakaz_right" type="text" name="rashod"/>
	<br>
	<input type = "button" value="Сохранить" OnClick = "form.submit()">
	</form>
</body>
</html>

У меня не работает функция deleteobject. Почему? Что я делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2010, 08:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от kireyev
document.getElementsByName
Слово Elements в названии функции как бы намекает, что возвращается не один элемент.
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2010, 09:26
Новичок на форуме
Отправить личное сообщение для kireyev Посмотреть профиль Найти все сообщения от kireyev
 
Регистрация: 21.09.2010
Сообщений: 5

Сообщение от Kolyaj Посмотреть сообщение
Слово Elements в названии функции как бы намекает, что возвращается не один элемент.
Исправил функцию так:
function deleteobject() {
	var position = document.getElementById('position')
	var width = position.getElementByName('width2')  
	position.removeChild(width)
	}


Все равно не работает...

Может дело в том, что я пытаюсь удалить динамически созданный элемент?

Последний раз редактировалось kireyev, 22.09.2010 в 09:32.
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2010, 09:31
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от kireyev
getElementByName
Такой функции нет.

Вы консоль ошибок-то откройте.
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2010, 09:39
Новичок на форуме
Отправить личное сообщение для kireyev Посмотреть профиль Найти все сообщения от kireyev
 
Регистрация: 21.09.2010
Сообщений: 5

Сообщение от Kolyaj Посмотреть сообщение
Слово Elements в названии функции как бы намекает, что возвращается не один элемент.
Но элемент с именем width2 единственный, в чем загвоздка?
Ответить с цитированием
  #6 (permalink)  
Старый 22.09.2010, 10:11
Новичок на форуме
Отправить личное сообщение для kireyev Посмотреть профиль Найти все сообщения от kireyev
 
Регистрация: 21.09.2010
Сообщений: 5

Сообщение от Kolyaj Посмотреть сообщение
Такой функции нет.
Перечитал матчасть, переделал вот так:
function deleteobject() {
var position = document.getElementById('position')
var width = position.getElementsByName('width2')[0]
position.removeChild(width)
}

Но все равно выдает ошибку 'Объект не поддерживает это свойство или метод' на 3 строке (((
Ответить с цитированием
  #7 (permalink)  
Старый 22.09.2010, 10:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Этот метод только у document есть.
Ответить с цитированием
  #8 (permalink)  
Старый 22.09.2010, 11:01
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

kireyev, тебе ведь нужно удалить 3 элемента. Не проще ли помещать их в div id='container'+x и удалять потом:
var elToDel = document.getElementById('container'+x)
elToDel.parentNode.removeChild(elToDel)
x--
Ответить с цитированием
  #9 (permalink)  
Старый 22.09.2010, 11:31
Новичок на форуме
Отправить личное сообщение для kireyev Посмотреть профиль Найти все сообщения от kireyev
 
Регистрация: 21.09.2010
Сообщений: 5

Сообщение от Sweet Посмотреть сообщение
kireyev, тебе ведь нужно удалить 3 элемента. Не проще ли помещать их в div id='container'+x и удалять потом:
var elToDel = document.getElementById('container'+x)
elToDel.parentNode.removeChild(elToDel)
x--
Отличное решение, для потомков:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" href = "style.css" type="text/css" media="screen">
<title></title>
<script type="text/javascript">
	var x = 1;
	function addobject() {
	x++
	var position = document.getElementById('position')
	
	var div1 = document.createElement('div')
	div1.setAttribute('id', 'div'+x)
	div1.innerHTML = 'Размеры позиции №'+x+', м:'
	position.appendChild(div1)

	var input1 = document.createElement('input')
	input1.setAttribute('type', 'text')
	input1.setAttribute('name', 'width'+x)
	div1.appendChild(input1)
	input1.className = 'zakaz_right'

	var input2 = document.createElement('input')
	input2.setAttribute('type', 'text')
	input2.setAttribute('name', 'lenght'+x)
	div1.appendChild(input2)
	input2.className = 'zakaz_right'
	}
	
	function deleteobject() {
	var elToDel = document.getElementById('div'+x)
	elToDel.parentNode.removeChild(elToDel)
	x--
	}
</script>
</head>
<body>
	<h1>Оформление нового заказа</h1>
	<form id="zakaz_form" name = "form" method = "get" action = "index.php">
	
	<div class="zakaz_left">Заказчик: <a href="#">Выбрать</a></div>
	
	<div class="zakaz_left">Материал: <a href="#">Выбрать</a></div>
	
	<div id="position">
		<div class="zakaz_left">Размеры позиции №1, м:</div>
		<input class="zakaz_right" type="text" name="width1"/><input class="zakaz_right" type="text" name="lenght1"/>
	</div>
	
	<input type="button" value="+ позиция" onclick="addobject()"/>
	<input type="button" value="- позиция" onclick="deleteobject()"/>
	<div class="zakaz_left">Общий расход материала, п.м:</div>
	<input class="zakaz_right" type="text" name="rashod"/>
	<br>
	<input type = "button" value="Сохранить" OnClick = "form.submit()">
	</form>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить элемент из дерева DOM dummer jQuery 13 16.01.2011 16:19
Как можно удалить динамически созданный элемент Арсений Элементы интерфейса 18 08.07.2010 12:56
Как удалить элемент из документа HTML Dima00782 Общие вопросы Javascript 2 28.06.2010 17:32
Как удалить элемент массива? velo Общие вопросы Javascript 2 05.02.2010 15:58
имея this как удалить элемент из тела html clgs Общие вопросы Javascript 1 13.05.2009 17:55