2013-12-06 2 views
0

Как я могу заменить spanКак заменить HTML элемент/тег в качестве контейнера

<span id="container"><img src="img.jpg" alt="image" id="content"></span> 

с anchor

<a id="container" href="example.com"><img src="img.jpg" alt="image" id="content"></a> 

Все, что я могу вспомнить, переписав весь документ с помощью document.write метод, который не кажется идеальным.
Примечание: Я ищу простое решение JavaScript, а не jQuery.

+1

См http://stackoverflow.com/questions/15090647/replace-the-anchor-tag-with- a-span-or-div-or-p –

+0

Я ищу решение для JavaScript. – Mori

ответ

1

Вот функция, я написал для вас:

function linkify(elementId, url) 
{ 
    var element = document.getElementById(elementId), 
     parent = element.parentNode, 
     anchor = document.createElement('a'); 

    anchor.innerHTML = element.innerHTML; 
    anchor.setAttribute('id', elementId); 
    anchor.setAttribute('href', url); 

    parent.replaceChild(anchor, element); 
} 

Вы можете использовать его так:

linkify('container', 'http://example.com'); 

Если вы не хотите, чтобы использовать его как функцию, проверьте revision 1 вместо этого ответа!

+0

Это будет работать, только если span является последним дочерним элементом его родителя, в противном случае якорь будет находиться в другом месте, чем исходный диапазон. – Thayne

+0

@Thayne Я обновил свой ответ. –

+0

Ваш ответ и у Диланты, похоже, тот же подход. Однако я выбрал ваш ответ, поскольку вы были первым респондентом. – Mori

0

если вы используете JQuery, вы можете просто использовать

var contents = $('#container').contents(); 
var anchor = $('<a id="container">').attr('href','example.com').append(contents); 
$('#container').replaceWith(anchor); 
+2

Только JavaScript. Спасибо, в любом случае! – Mori

+0

Кроме того, в любом случае нужно жестко кодировать все, что смешно. –

+0

жесткого кодирования не нужно, я изменил его, чтобы использовать существующий тег изображения. Главное - использовать функцию replaceWith. – Thayne

1

Попробуйте

var mySpan = document.getElementById("container"); 
    var myAnchor = document.createElement("a"); 
    myAnchor.setAttribute("id","container"); 
    myAnchor.setAttribute("href","example.com"); 
    myAnchor.innerHTML = mySpan.innerHTML; 
    mySpan.parentNode.replaceChild(myAnchor,mySpan); 
Смежные вопросы