Почему document.getElementById () возвращает значение атрибута href гиперссылки?
Это не так. Но когда вы «alert (element)», alert () вызывает toString () для элемента, а HTMLLinkElement.toString () возвращает содержимое атрибута href, поэтому «alert (link)» выдает те же результаты, что и «alert» (link.href)».
(что немного странно и запутанно, но именно так работал JavaScript 1.0, поэтому с этим уже ничего не поделаешь.)
Я проверяю значение 'ele' после вызова getElementById, оно печатает "String.Format (" javascript: ShowHideElement ..... "
Этого не должно случиться с конкретным примером, который вы привели ... код серверной части «String.Format ...» не может пройти на сторону клиента, если вы случайно не вложили его в цитаты, например .:
lnkShowHide.NavigateUrl = "String.Format(...)";
Другие проблемы, которые приходят на ум, заключаются в том, что функция меняет имя (ShowHideElement / ShowHideImage), и вы, похоже, пытаетесь установить «.src» для элемента ссылки (). Ссылки не имеют .src, только изображения.
Во всяком случае, вы, вероятно, не хотите делать виджет показа / скрытия подобным этому. javascript: URL-адреса всегда неправильны, и в вашем примере много вложенных строк друг в друге, которые всегда хрупки. Вы можете попробовать подход «ненавязчивый сценарий», генерируя разметку, например:
<div class="showhide"> blah blah blah </div>
С помощью JavaScript для добавления функциональности открытия / закрытия на стороне клиента (чтобы UA, не являющиеся JavaScript, и поисковые системы увидели всю страницу без скрытых битов). eg.:
function ShowHider(element) {
var img= document.createElement('img');
element.parentNode.insertBefore(img, element);
function toggle() {
var show= element.style.display=='none';
element.style.display= show? 'block' : 'none';
img.src= '/images/showhide/'+(show? 'open' : 'closed')+'.gif';
img.alt= show? '-' : '+';
img.title= 'Click to '+(show? 'close' : 'open');
}
img.onclick= toggle;
toggle();
}
// Apply ShowHider to all divs with className showhide
//
var divs= document.getElementsByTagName('div');
for (var i= divs.length; i-->0;)
if (divs[i].className=='showhide')
ShowHider(divs[i]);