Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2013, 15:55
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

Функция удаления по содержанию что то не работает...
Написал функцию по удалению элемета по его содержанию (может у кого есть код лучшей реализации?), и когда подаю название контейнера ('сontainer'), тип елемента ('a'), значение ('Back to Home'), хочу тот элемент у которого такое значение - удалить, но что то не получаеться...

первый алерт выводит почему то:
javascript:tpzDrillTable('var/L.back.msg', 'Back to Home', '204','',true)


второй выводит весь искомый
и третий выдает - Back to Home (что правильно наверно)

Вопрос как правильно удалить такой элемент? Пробовал и внутрености чистить и удалять - срабатывет черт знает как и скрипт останавливаеться...

демо пример:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function DeleteIT(containerElementID, ElementType, SValue)
{
	var trgElement = document.getElementById(containerElementID).getElementsByTagName(ElementType);
	var RpdT = trgElement.length;
	for (var i=0; i<RpdT; i++) 
	{
		
		if (trgElement[i].outerHTML.replace(/<\/?[^>]+>/g, '') == SValue)
		{
			alert(trgElement[i]);
			alert(trgElement[i].outerHTML);
			alert(trgElement[i].innerHTML);
			trgElement[i].parentNode.removeChild(trgElement[i]);
			//trgElement[i].outerHTML = "";
		}
	}
}
$(document).ready(function ()
{
	DeleteIT('container', 'a', 'Back to Home')
});
</script>
</head>
<body>
<div id="container">
     <div id="1">Blabla</div>
     <a buttonid="204" id="X18Border" href="javascript:tpzDrillTable('var/L.back.msg', 'Back to Home', '204','',true)" title="Back to Home" tabindex="" content="Back to Home">Back to Home</a>
     <div id="N">bloblo</div>
</div>
</body>
</html>

Последний раз редактировалось Kvark, 15.08.2013 в 20:19.
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2013, 17:08
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Kvark, что-то не совсем понял. Что передаётся в DeleteLT? Покажите пример вызова Вашей функции.
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2013, 18:34
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

я демо cделел только сохранить нажать забыл - теперь вот показывает
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2013, 19:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Kvark,

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function DeleteIT(containerElementID, ElementType, SValue)
{
   $("#"+containerElementID + " " + ElementType + ":contains(" + SValue + ")").remove()
}
$(document).ready(function ()
{
	DeleteIT('container', 'a', 'Back to Home')
});
</script>
</head>
<body>
<div id="container">
     <div id="1">Blabla</div>
     <a buttonid="204" id="X18Border" href="javascript:tpzDrillTable('var/L.back.msg', 'Back to Home', '204','',true)" title="Back to Home" tabindex="" content="Back to Home">Back to Home</a>
     <div id="N">bloblo</div>
</div>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2013, 20:04
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function removeByHTML(id, tag, content) {
   var a = document.getElementById(id).getElementsByTagName(tag);
   for(var i=0; i<a.length; i++) if(a[i].innerHTML == content) {
      a[i].parentNode.removeChild(a[i]);
      break;
   }
}

removeByHTML('container', 'a', 'Back to Home');
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2013, 20:20
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

мне без джиквери нужно сделать
Руслан спасибо, с break; заработало!

Последний раз редактировалось Kvark, 15.08.2013 в 20:26.
Ответить с цитированием
  #7 (permalink)  
Старый 15.08.2013, 20:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Ruslan_xDD,
Kvark,
если элементов несколько их удаляют начиная с конца ноделиста.
Ответить с цитированием
  #8 (permalink)  
Старый 15.08.2013, 20:47
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

мне нужно удалить определенный элемент только, у которого значение между тегами определенное (даблирующие элементы убиваю) но с индексацией никак не разберусь - как то сложно когда она на лету меняеться...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает if(true){}, что не так? switch001 Javascript под браузер 5 09.08.2013 10:17
Не работает функция Vladjiss jQuery 5 22.06.2013 18:35
Извините что создаю еще одну тему, но мне нужна помощь и ваше мнение megaupload Оффтопик 11 27.05.2013 12:58
не работает функция unserialize zebulun Общие вопросы Javascript 3 28.12.2012 17:47
Почему не работает функция? Редактировать Isaac Общие вопросы Javascript 16 18.12.2012 16:22