Javascript 带有ng的多个元素如果始终只显示其中一个元素,它们是否可以共享同一id?

Javascript 带有ng的多个元素如果始终只显示其中一个元素,它们是否可以共享同一id?,javascript,html,angularjs,angular-ng-if,Javascript,Html,Angularjs,Angular Ng If,如标题所示。我希望有两个元素具有ng if和相同的id,同时只显示其中的一个。我想知道它们是否可以具有相同的id,因为ng if将删除1个元素,因此只有1个元素具有该id 我的意思是,不仅是如果它可以做到,而且如果它是一种好的做事方式 下面是我想到的代码示例(已简化): type1 类型2 假设vm.type只能有1和2的值 编辑:我不可能使用类而不是id。我只是想知道是否可以为每个元素使用一个id,或者所有元素都需要单独的id Edit2:我不能使用类并且需要ID,因为我对测试进行了这些更改

如标题所示。我希望有两个元素具有ng if和相同的id,同时只显示其中的一个。我想知道它们是否可以具有相同的id,因为ng if将删除1个元素,因此只有1个元素具有该id

我的意思是,不仅是如果它可以做到,而且如果它是一种好的做事方式

下面是我想到的代码示例(已简化):

type1
类型2
假设vm.type只能有1和2的值

编辑:我不可能使用类而不是id。我只是想知道是否可以为每个元素使用一个id,或者所有元素都需要单独的id

Edit2:我不能使用类并且需要ID,因为我对测试进行了这些更改,这些更改依赖于ID的测试。我无法改变这一点,因此使用类对我来说不是一个选项,也不是对我问题的答案


Edit3:我也绝对肯定,如果显示ng,则始终只有一个元素。我只需要它来显示元素类型,并且总是只有一种类型。如果需求发生了变化,那么它已经需要进行大量的更改,相比之下,更改元素类型的显示之类的内容根本不是问题。

您可以看到我的小提琴,它基于您的代码

这是通过使用“ng click”来处理的,因此它可能远远不能满足您的需要

如果使用“ng if”,则可以在不同的元素上设置相同的“ID”

但使用相同的id并不好,因为任何人都不知道什么时候会出现错误


欢迎所有反馈。:)

您可以看到我的小提琴,它基于您的代码

这是通过使用“ng click”来处理的,因此它可能远远不能满足您的需要

如果使用“ng if”,则可以在不同的元素上设置相同的“ID”

但使用相同的id并不好,因为任何人都不知道什么时候会出现错误


欢迎所有反馈。:)

回答你的问题,是的。

在您概述的设置中,这是正常的,因为DOM中一次只存在一个元素

由于现有的限制,我遇到了同样的情况。根据W3,在查看了之后,只要DOM树中只有一个ID为的元素,它就应该是ok的
ng如果
从DOM中删除元素,那么它应该是可接受的


注意:评论中的一些人提出了一些非常好的观点。正如注释中所指出的,使用相同ID的多个元素通常是不好的做法。阅读评论了解更多信息并了解上下文。回答您的问题,是。

在您概述的设置中,这是正常的,因为DOM中一次只存在一个元素

由于现有的限制,我遇到了同样的情况。根据W3,在查看了之后,只要DOM树中只有一个ID为的元素,它就应该是ok的
ng如果
从DOM中删除元素,那么它应该是可接受的


注意:评论中的一些人提出了一些非常好的观点。正如注释中所指出的,使用相同ID的多个元素通常是不好的做法。阅读评论了解更多信息并了解上下文。

您需要ID做什么?CSS?那么为什么不使用类呢?元素ID在整个文档中应该是唯一的,这是HTML规范所要求的,它不是一个角度的东西。是的,我认为您的代码中没有问题,因为DOM中一次只能有一个元素。@edo.n。OP的问题是关于“ID是否唯一,因为Angular不会生成具有相同ID的其他元素?”当然,但如果他在两个月后返回到相同的代码,并且忘记了一次只能显示其中一个元素,该怎么办。我建议他尽早防范这种可能性。您使用类的想法更加可靠。您需要ID做什么?CSS?那么为什么不使用类呢?元素ID在整个文档中应该是唯一的,这是HTML规范所要求的,它不是一个角度的东西。是的,我认为您的代码中没有问题,因为DOM中一次只能有一个元素。@edo.n。OP的问题是关于“ID是否唯一,因为Angular不会生成具有相同ID的其他元素?”当然,但如果他在两个月后返回到相同的代码,并且忘记了一次只能显示其中一个元素,该怎么办。我建议他尽早防范这种可能性。您使用类的想法更加可靠。
<span id="elementType" ng-if="vm.type === 1">type1</span>
<span id="elementType" ng-if="vm.type === 2">type2</span>
$scope.changeType = function (){
    if($scope.type===1){
        $scope.type = 2;
    } else if($scope.type===2){
        $scope.type = 1;
    }
};