Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Функция удаления по содержанию что то не работает... (https://javascript.ru/forum/dom-window/40689-funkciya-udaleniya-po-soderzhaniyu-chto-ne-rabotaet.html)

Kvark 15.08.2013 15:55

Функция удаления по содержанию что то не работает...
 
Написал функцию по удалению элемета по его содержанию (может у кого есть код лучшей реализации?), и когда подаю название контейнера ('с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>

ruslan_mart 15.08.2013 17:08

Kvark, что-то не совсем понял. Что передаётся в DeleteLT? Покажите пример вызова Вашей функции.

Kvark 15.08.2013 18:34

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

рони 15.08.2013 19:57

Kvark,
:cray:
<!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>

ruslan_mart 15.08.2013 20:04

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');

Kvark 15.08.2013 20:20

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

рони 15.08.2013 20:26

Ruslan_xDD,
Kvark,
если элементов несколько их удаляют начиная с конца ноделиста.

Kvark 15.08.2013 20:47

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


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