Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 14:22 05.07.25 
Компютри и Интернет
   >> WEB Дизайн и HTML
*Кратък преглед

Страници по тази тема: 1 | 2 | (покажи всички)
Тема как да сложа таг около друг таг с javascript ?  
Автор Гpиrop-ът (новак)
Публикувано01.03.11 21:36



Привет,

искам чрез скрипт да сложа <div id='d1'></div> около всеки таг <img.....>
Т.е. желаният краен резултат е
<div id='d1'>
<img....>
</div>

Пробвах с insertAdjacentHTML да сложа <div id='d1'> beforeBegin и </div> afterEnd, но резултата е странен - получава се
<div id='d1'></div>
<img....>
<div id='d1'></div>

т.е. вместо да затвори <имг..> в <див>, ми слага празен таг отпред и отзад.
Надявам се че го обясних, има ли как да стане?

10х



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: Гpиrop-ът]  
Автор croesus (хлевоуст)
Публикувано01.03.11 22:54



Най-лесно е с jQuery. В него има такава фуннкция - "wrap ()". На български - "увиване".





Тема Re: как да сложа таг около друг таг с javascript ?нови [re: croesus]  
Автор Гpиrop-ът (новак)
Публикувано02.03.11 13:43



благодаря. Това сигурно ще стане, ако няма друг вариант ще го използвам.
Но все пак не ми се иска да прикачам четвърт мегабайт скрипт само заради това. Някакъв друг начин?



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: Гpиrop-ът]  
Автор croesus (хлевоуст)
Публикувано02.03.11 15:41



Четвърт мегабайт? wrap() важи и за jQuery 1.0, което е 9 кВ.



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: Гpиrop-ът]  
Автор The giver and the taker (добър човечец)
Публикувано02.03.11 16:07



Еми

пише, че първият аргумент на функцията insertAdjacentHTML посочва дали кодът да се постави преди, или след обекта. Направи скрипта така, че първо да минава кода и да поставя <div class="MyDiv"> отпред (задаваш "beforeBegin"), и после пак извикваш insertAdjacentHTML, обаче като първи аргумент задаваш "afterEnd" и му указваш да постави </div>

------------------------------------------



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: The giver and the ta]  
Автор Гpиrop-ът (новак)
Публикувано03.03.11 00:13



на теория е така, но на практика е различно. Ако опиташ да вкараш <div class="MyDiv"> beforeBegin, браузъра вкарва автоматично и затварящия таг, т.е. резултата е
<div class="MyDiv"></div><img ...>
Ако опиташ да вкараш само затварящ таг, независимо къде, не става нищо.

Изглежда кода който добавяш трябва да е валиден в момента на вмъкване и затова не можеш да вмъкнеш таг на части.

@croesus: jQuery 1.0 е 45+ КБ. Сигурно ако махнеш коментари, бланкс и т.н. става 9. Ако не намеря друг начин сигурно ще го разчопля да видя мога ли да измъкна каквото ми трябва. Не искам да използвам версия от преди години, кой знае колко бози има вътре.



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: Гpиrop-ът]  
Автор Бokop (Христо)
Публикувано21.03.11 23:31



Доста време е минало и най-вероятно си се оправил. Ето ти едно кратко примерче, което прави точно това, което искаш. Тествано под Мозила и IE.

<html>

<head>
<script type="text/javascript">
function _wrapDivAroundImage(string)
{
return string.replace(/<\s*img[^>]+>/gi,
function(str){
return "<div id='d1'>"+str+"</div>";
});
}
window.onload = function()
{
alert(_wrapDivAroundImage(document.body.innerHTML));

}
</script>
</head>
<body>
<img src="http://i.dir.bg/clubs/img/new_clubs_logo.gif" border="0"/>
</body>
</html>


Господ ще ми прости греховете. Това му е работата.

Редактирано от Бokop на 21.03.11 23:53.



Тема Re: как да сложа таг около друг таг с javascript ?нови [re: Бokop]  
Автор Гpиrop-ът (новак)
Публикувано12.04.11 10:44



благодаря, но не прави точно това :)

Тоя код заменя <имг..> с <див><имг..></див> в променлива, имаща за стойност document.body.innerHTML. Обаче това не променя действителния document.body.innerHTML. Дори да направя

document.body.innerHTML = _wrapDivAroundImage(document.body.innerHTML);

- това не дава грешка, но и няма ефект. И в ИЕ, и в ФФ, ако погледна с дев.туулс текущия сорс, около имг няма див



Тема Нещо грешиш.нови [re: Гpиrop-ът]  
Автор Бokop (Христо)
Публикувано13.04.11 11:20



Изпълнението на този код ми дава следния резултат. Същия е и под IE.


<html>
<head>
<style type="text/css">
div {
border: 5px solid red;
}
</style>
<script type="text/javascript">
function _wrapDivAroundImage(string)
{
return string.replace(/<\s*img[^>]+>/gi,
function(str){
return "<div>"+str+"</div>";
});
}
window.onload = function()
{
document.body.innerHTML = _wrapDivAroundImage(document.body.innerHTML);
}
</script>
</head>
<body>
<img src="http://i.dir.bg/clubs/img/new_clubs_logo.gif" border="0"/>
</body>
</html>








Господ ще ми прости греховете. Това му е работата.

Редактирано от Бokop на 13.04.11 15:19.



Тема Re: как да сложа таг около друг таг с javascript ? [re: Бokop]  
Автор Triglav Zmei (gorianin)
Публикувано13.04.11 15:10



Пича просто не се е сетил че този алерт:

alert(_wrapDivAroundImage(document.body.innerHTML));

тук не му върши никаква работа и вместо това трябва да вкара рeзултата от изпълнението на функцията в HTML:

document.body.innerHTML = _wrapDivAroundImage(document.body.innerHTML);



Студенти, икономисвайте отпадъците! Те са за вас. (Лозунг в студентски стол)


Страници по тази тема: 1 | 2 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.