2

这是正确的方法吗?

<a id="load" href="#" class="btn load" onclick="request(this); $('#load').fadeOut(2000)">add</a>

<a href="#" id="test" onClick="alert( 'TEST!' )">here</a>

<script language="javascript">
var requests = 2;

function request(self)
{if(self.href != "#")
requests -= 1;

if(requests === 0)
document.getElementById("test").id= "nextstep";}
</script>

如果请求 = 0,我希望 id="test" 更改为 id="nextstep"。

4

4 回答 4

6

你可以试试:

document.getElementById('test').setAttribute('id', 'nextstep');
于 2009-09-12T00:41:37.533 回答
1

这正是你要做的事情,只要你将它包装在脚本标签中......

<script language="javascript" type="text/javascript">
if(requests === 0){
    document.getElementById('test').id = "nextstep";
}
</script>

如果您试图在单击该锚点时触发它,那么您将使用:

<script language="javascript" type="text/javascript">
function changeID(){
    if(requests === 0){
        document.getElementById('test').id = "nextstep";
        alert('TEST!');
    }
}
</script>

<a href="#" id="test" onclick="changeID()">Test</a>

编辑:好吧,在我发布此内容后,您更改了问题的内容...

于 2009-09-12T00:42:12.963 回答
1

您需要使用“setAttribute”来更改锚标记的 ID。

您的 getElementById('test') 部分正确,但只需抛出 ".setAttribute('id','nextstep');"

希望有帮助!

于 2009-09-12T00:45:33.050 回答
1

if(self.href != "#")

有你的问题。链接 href 由浏览器规范化,因此页面 '<a href="http://www.example.com/" rel="nofollow noreferrer">http://www.example.com/ 上的链接 '#' ' 的 href 属性为 '<a href="http://www.example.com/#" rel="nofollow noreferrer">http://www.example.com/#' 且不符合条件。

避免使用名称“self”,因为它与全局对象(又名“window”)的名称冲突。您可以通过从 JavaScript 分配处理程序来避免笨拙地传入“self”:

document.getElementById('load').onclick= request;

而不是onclick属性,那么您可以在 request() 中使用“this”。request() 还应该return false;停止被跟踪的链接(使浏览器滚动到顶部)。更好的是使用<button>(或<input type="button">),因为它是一个操作按钮,而不是您可以在新窗口或书签中打开的链接。(你总是可以使用 CSS 让它看起来不像一个按钮。)

不要对 HTML 使用 setAttribute(),它在 IE 中存在与此用法无关的问题。设置element.id已经很好了。

但是,无论如何,这一切似乎都是一种奇怪的方式来处理你想做的事情。

于 2009-09-12T02:11:32.767 回答