Изменить ссылку тега привязки с помощью JavaScript - PullRequest
6 голосов
/ 22 октября 2010

Привет, у меня есть вопрос по javascript. Мне нужно назначить значение href для тега привязки или asp: HyperLink. ЧТО-ТО. это позволит мне связать текст в всплывающем диалоговом окне с href, который указывает функция. Вот мой код

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

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

Ответы [ 3 ]

5 голосов
/ 22 октября 2010

Вы не можете ссылаться на 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 голосов
/ 22 октября 2010

Ваш javascript должен запускаться после завершения загрузки страницы.

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

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


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

}
0 голосов
/ 22 октября 2010

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

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