当我点击“显示详细信息”链接时,它应该更改为“隐藏详细信息”。我尝试了以下代码,但它不起作用:
out.print("<a href=\"javascript:parent.showHideDetails('"+id+"',this);\">show details</a>");
function showHideDetails(id,obj) {
try
{
alert(obj.innerText);
obj.innerText = 'hide details';
}
catch (err)
{
alert(err);
}
}
答案 0 :(得分:7)
问题是你的href属性中的this
没有指向锚点。您可以在那里传递一个标识符,并为锚元素提供与id
属性相同的标识;然后使用document.getElementById获取锚点。
示例:
out.print("<a href=\"javascript:parent.showHideDetails('"+id+"','anchor_1');\" id=\"anchor_1\">show details</a>");
function showHideDetails(id,identifier) {
try
{
var obj = document.getElementById(identifier);
alert(obj.innerText);
obj.innerText = 'hide details';
}
catch (err)
{
alert(err);
}
}
答案 1 :(得分:2)
您问题中的详细信息很少。以下是一些可能性:
从内联处理程序中删除parent.
,并将其更改为onclick
:
"<a href=\"#\" onclick=\"javascript:showHideDetails('"+id+"',this);\">show details</a>"
也许showHideDetails()
函数不是全局的
您使用的浏览器可能不支持innerText
。请改为innerHTML
。
obj.innerHTML = 'hide details';
答案 2 :(得分:0)
InnerText是在不同浏览器中以不同方式命名的浏览器挑剔之一。如果您刚开始使用javascript,我建议使用像jQuery这样的框架,因为调用类似函数要简单得多:
$('#linkID').text('show');
比正确设置每个浏览器变体。该框架为您做了所有这些。
答案 3 :(得分:0)
this
将指向DOM窗口,而不是<a>
标记。因此,请使用onclick
属性来执行。
out.print("<a href=\"#\" onclick=\"showHideDetails('"+id+"',this);\">
show details</a>");