2010-10-22 2 views
6

Эй У меня есть вопрос для javascript. Мне нужно присвоить значение href привязному тегу или asp: HyperLink. ЧТО НИБУДЬ. что позволит мне связать текст в диалоговом всплывающем окне с href, который задает функция. Вот мой код.Измените href метки привязки на javascript

<'custom:JQueryDialog I made' runat=server ID="dialogPopUp" AutoOpen="false" 
    CloseOnEscape="true" Modal="true" Title="Download" width="300px"> 
    //I will spare you all of the div tags for formatting 
    <a runat="server" id="downloadLink" target="_blank" class="'css with an icon'" 
     href=""></a> 
</'custom:JQueryDialog I made'> 

Теперь мне нужно получить fso из базы данных, так как именно там хранится информация. Это fso отличается в зависимости от того, что класс отражателя объекта отправляет на этот javascript. У меня есть функция, которая форматирует строки javascript, похожие на C#, которые я нашел. Затем у меня есть другая функция, которая получает fso от класса отражателя объекта. Это работает. Я тестировал строку, отображая ее в предупреждении, и это отлично работает. Проблема, с которой я столкнулась, - установить href тега привязки с помощью javascript. Я схожу с ума! Пожалуйста помоги!

Строка Формат:

String.format = function() { 
    var s = arguments[0]; 
    for (var i = 0; i < arguments.length - 1; i++) { 
     var reg = new RegExp("\\{" + i + "\\}", "gm"); 
     s = s.replace(reg, arguments[i + 1]); 
    } 
} 

Моя попытка изменить HREF:

function changeHref(fso) { 
    var downloadHref = String.format("Download.ashx?fso={0}", fso); 
    $('#<%= this.downloadLink.ClientID %>').href = downloadHref; 
    showDialog(<%= this.'custom dialog i made'.ClientID %>); 
} 

Ссылка для скачивания изменяется и все. Кажется, я не могу это установить! Я пропустил порядок загрузки страницы? Нужно ли это делать после загрузки всей страницы, поскольку элементы могут быть еще не созданы? Я попробовал пару разных вещей. Я действительно мог использовать направление.

ответ

5

Вы не можете ссылаться на href прямо на объект jQuery. Все, что вы делаете, это создание нового свойства. Измените его, чтобы установить атрибут через attr, как это ...

$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 

Для полноты следует упомянуть, что вы можете добраться до базового элемента DOM с использованием синтаксиса массива, а затем вы можете установить HREF с регулярный Javascript ...

var domElem = $('#<%= this.downloadLink.ClientID %>')[0]; // DOM element is at 0 
domElem.href = downloadHref; 

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

showDialog("<%= this.'custom dialog i made'.ClientID %>"); 
+0

Я делаю это с помощью регулярного яваскрипта функции. У этого не есть функция .attr? не работает с этим синтаксисом. – Tom

+0

Я понял. Это .attr ('href', downloadHref); – Tom

0

Эта строка неверна, для установки HREF вам необходимо получить доступ к функции jQuery attr.

$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 
0

Ваш javascript необходимо запустить после загрузки страницы.

JQuery способ сделать это:

$(document).ready(function() { init() }) 


function init() { 
    $('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 
    //Josh's code above 

} 
Смежные вопросы