【问题标题】:Changing the value of "id=" with document.getElementById用 document.getElementById 改变 "id=" 的值
【发布时间】:2010-11-27 16:25:50
【问题描述】:

这是正确的做法吗?

<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>

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

【问题讨论】:

  • Safari 4,正如我在其他人中测试的那样,这不起作用?
  • /span>
  • 您可能需要查看webkit.org/blog/68/understanding-html-xml-and-xhtml,因为 xhtml 1.0 与 html 4 不同。您可能会发现 html 4 更好。有关 setAttribute 的更多信息以及它可能不起作用的原因,您可以查看 reference.sitepoint.com/javascript/Element/setAttribute
  • 这可以用 jQuery 完成吗?因为我已经在使用 jQuery,所以这可能会让它更容易,并让它工作?
  • 我建议查看我对您的其他问题的回答,以采用完全不同的方式来解决您的问题,而无需调整 href 和 id——只需根据应用程序的状态添加/删除处理程序。

标签: javascript request onclick document href


【解决方案1】:

你可以试试:

document.getElementById('test').setAttribute('id', 'nextstep');

【讨论】:

  • 不需要使用setAttribute(除非我们在谈论XML DOM)element.id = 'nextstep' 在这种情况下应该足够了。
【解决方案2】:

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

<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>

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

【讨论】:

  • 是的,你明白我现在要做什么了吗?哈哈
【解决方案3】:

你需要使用'setAttribute'来改变锚标签的ID。

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

希望有帮助!

【讨论】:

    【解决方案4】:

    if(self.href != "#")

    你的问题。链接 href 由浏览器规范化,因此页面“http://www.example.com/”上的链接“#”具有“http://www.example.com/#”的 href 属性并且不匹配条件。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2011-10-23
      相关资源
      最近更新 更多