如何更改<a> using javascript</a>的innerText

时间:2011-06-21 14:36:08

标签: javascript

当我点击“显示详细信息”链接时,它应该更改为“隐藏详细信息”。我尝试了以下代码,但它不起作用:

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

}

4 个答案:

答案 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>");