嘿我有一个关于javascript的问题。我需要为锚标记或asp:HyperLink分配一个href值。一些东西。这将允许我将对话框弹出窗口中的文本链接到函数指定的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的不同而不同。我有一个函数,格式化类似于我发现的C#的javascript字符串。然后我有另一个函数从实体反射器类获取fso。这有效。我通过在警报中显示它来测试字符串,这很好。我遇到的问题是使用javascript设置锚标记的href。我疯了!请帮忙!
字符串格式:
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 %>);
}
下载链接已更改。我似乎无法设置这个!我错过了页面加载的顺序吗?在整个页面加载后我是否需要这样做,因为可能还没有生成项目?我尝试了几个不同的东西。我真的可以用一个方向。
答案 0 :(得分:5)
您无法直接从jQuery对象引用href
。您所做的只是创建一个新属性。更改它以通过attr
这样设置属性......
$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
为了完整性,我应该提到你可以通过使用数组语法来获取底层DOM元素,然后你可以使用常规Javascript设置href ......
var domElem = $('#<%= this.downloadLink.ClientID %>')[0]; // DOM element is at 0
domElem.href = downloadHref;
另外,另一个可能的错误,我认为你需要引用...
showDialog("<%= this.'custom dialog i made'.ClientID %>");
答案 1 :(得分:0)
此行不正确,设置您需要访问jQuery的HREF
函数的attr
。
$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
答案 2 :(得分:0)
您的javascript需要在页面加载完成后运行。
jQuery的做法:
$(document).ready(function() { init() })
function init() {
$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
//Josh's code above
}