避免使用html元素中的id

时间:2010-12-01 18:45:59

标签: javascript html

我正在开发一个基于javascript的应用程序。

使用id来识别元素通常被认为有点不好,因为id是全局的,如果碰巧发生碰撞,它会立即陷入困境。

有哪些有效方法可以避免这种情况?是否可以在通常使用id的地方使用use类,或者有缺点。请注意,我对css方面的兴趣不大,只是javascript。

编辑:我想我得到了答案,但我们很清楚,我不是在讨论文档对象中的重复项。我想构建一组可重用的组件。一般来说,我会通过他们的身份访问它们。

我没有使用DOM生成html,有一个html模板,然后由javacript“丰富”。当我想在同一页面上重用组件时,问题就出现了。命名空间也无济于事;因此即使我的元素在该组件的上下文中是“唯一的”,也不能保证它们在整个文档中。

使用类可能是不好的做法,但还有其他选择吗?

6 个答案:

答案 0 :(得分:4)

如果ID是唯一的,则使用ID,如果它被重用,则使用类

使用不是“有点不好”的ID的示例

<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>

可能是,这些只会出现在页面上

使用类的示例

<div class="floatleft"></div>

<div class="bold"></div>

<div class="center"></div>

这些是通用的,可以在多种情况下使用,甚至可以一起使用! <div class="floatleft bold center"></div>

答案 1 :(得分:1)

  

使用id来识别元素是   经常被认为有点不好,因为   id是全球性的,它会立即发生   如果碰巧有一个,那就搞砸了   碰撞。

我不认为我同意这一点。 id的整个点是(唯一地)id一个元素。是的,如果发生冲突可能会出现问题,这就是为什么您需要小心并确保您的ID是唯一的。像Sencha和Sproutcore这样的JS框架可以帮到你。

使用类代替id是不行的。 css类的要点是能够将一组样式应用于类的所有元素。类应该应用于多个元素。

答案 2 :(得分:1)

您可以使用类,只要您不希望它们是唯一的。如果您确实希望元素是唯一的,那么您不应该担心使用ID。

答案 3 :(得分:1)

在创建Javascript应用程序时,您可以保存指向DOM中已创建元素的指针,而无需通过ID访问它们:

var el = document.createElement('div');
document.body.appendChild(el);

// now you can manipulate el as you want
el.style.backgroundColor = ...;
el.innerHTML = ...; 

答案 4 :(得分:0)

我绝对不同意你的陈述(与一般的大多数一揽子陈述一样)。

当你需要唯一识别的东西时,使用Ids是完美的。这就是他们的目的。

如果你有其他元素需要以某种方式进行分组,并且通过它们的结构或标记引用它们将无法工作......那么我将重新使用类。

答案 5 :(得分:0)

有时需要ID,例如,使用<label for="MyID">代码时。