首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >document.getElementById onclick在每次页面加载时只工作一次

document.getElementById onclick在每次页面加载时只工作一次
EN

Stack Overflow用户
提问于 2011-09-28 12:09:01
回答 2查看 3K关注 0票数 1

我有一个链接:

代码语言:javascript
复制
<a id="lnk" href="${pageContext.request.contextPath}/path/path2.pdf?var0=sometext&var1=moretext" onclick="update();"target="_blank">click to export</a>

和一个单独文件中的JavaScript函数:

代码语言:javascript
复制
function update()
{
    var link = document.getElementById("lnk");
    link.href += "&var2=" + document.getElementById("textareaIdName").value;
    return;
}

这是为了从jsp表单中的文本区域框中获取文本,并将其传递到控制器中进行输出。它在我第一次单击链接时起作用,但是如果我更改框中的文本并再次单击链接,它会从第一次单击其他链接时保持相同的值,直到我重新加载页面,而不管我在文本框中做了什么更改。该链接返回文件下载。

如何在不重新加载页面的情况下,不断地从文本区域获取新文本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-28 12:12:58

出现这种情况的原因是,每次按下链接时都会使用+=,该链接会将var2连接到超链接的末尾,因此您应该使用以下命令:

代码语言:javascript
复制
var linkName = "${pageContext.request.contextPath}/path/path2.pdf?var0=sometext&var1=moretext";

function update(obj) {
    obj.href = linkName + "&var2=" + document.getElementById("textareaIdName").value;
    return;
} 

<a id="lnk" href="" onclick="update(this);" target="_blank">click to export</a>
票数 4
EN

Stack Overflow用户

发布于 2011-09-28 13:08:17

在您的html中:

代码语言:javascript
复制
<a ... onclick="return update(this);">click me</a>

在处理程序中传递它意味着函数中的这个引用了DOM元素,所以您不必使用getElementById,所以函数是:

代码语言:javascript
复制
function update(link) {
    link.href = /* whatever */;
}

现在,您可以将处理程序放在多个元素上,而无需知道或使用id。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7578194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档