Javascript 如果在DOM中仅呈现一个HTML元素,则多个HTML元素具有相同的id
如果dom中只呈现一个id元素,那么可以有多个相同的id元素吗? 例如,在Laravel中,您可以有:Javascript 如果在DOM中仅呈现一个HTML元素,则多个HTML元素具有相同的id,javascript,html,laravel,solid-principles,Javascript,Html,Laravel,Solid Principles,如果dom中只呈现一个id元素,那么可以有多个相同的id元素吗? 例如,在Laravel中,您可以有: @if (Route::has('login')) @auth <h2 id='header'>Dashboard</h2> @else <h2 id='header'>Sign up</h2> @endauth @endif 我意识到在同一个元素上有多个id是不好的做法,但从技术上讲,在这种情况下,DO
@if (Route::has('login'))
@auth
<h2 id='header'>Dashboard</h2>
@else
<h2 id='header'>Sign up</h2>
@endauth
@endif
我意识到在同一个元素上有多个id是不好的做法,但从技术上讲,在这种情况下,DOM中只会呈现一个元素,就浏览器而言,它只检测其中一个元素,所以它会对javascript等产生任何不良影响吗。。?不过,它可以简化css。
我不打算在我的项目中使用它,只是出于好奇。我会这样做:
@if (Route::has('login'))
<h2 id="header">{{ Auth::check() ? 'Dashboard' : 'Sign up' }}</h2>
@endif
我会这样说:
@if (Route::has('login'))
<h2 id="header">{{ Auth::check() ? 'Dashboard' : 'Sign up' }}</h2>
@endif
在任何情况下,拥有一个类甚至对css来说都是更好的,因为ID在元素上增加了更大的权重,例如,如果您想要覆盖css属性,您将无法通过仅仅添加一个类来实现它 例如:
#header {
font-size: 1.5rem;
}
稍后,您希望只在一个header元素上覆盖css,而不在另一个元素上覆盖css,向该元素添加类不会覆盖元素的字体大小。我希望我对这个例子很清楚
因此,总结一下您的代码是可以的,当呈现代码时,它在页面上只会得到一个ID为的元素。在任何情况下,拥有一个类甚至对css来说都是更好的,因为ID在元素上增加了更大的权重,例如,如果您想要覆盖css属性,您将无法通过添加一个类来实现它 例如:
#header {
font-size: 1.5rem;
}
稍后,您希望只在一个header元素上覆盖css,而不在另一个元素上覆盖css,向该元素添加类不会覆盖元素的字体大小。我希望我对这个例子很清楚
因此,总结一下您的代码是可以的,在呈现代码时,它将在页面上只获取一个ID为的元素。如果只呈现其中一个元素,这与只编写其中一个元素没有区别 由于您的代码,这两个h2不可能在DOM中呈现 如果DOM中的任意两个元素使用相同的ID呈现,那么唯一会导致问题的是
在这种情况下,如果您尝试选择其中一个元素或对其应用任何js,它将选择在DOM上呈现的第一个元素。如果仅呈现其中一个元素,则与仅写入其中一个元素没有区别 由于您的代码,这两个h2不可能在DOM中呈现 如果DOM中的任意两个元素使用相同的ID呈现,那么唯一会导致问题的是
在这种情况下,如果您尝试选择其中一个元素或对其应用任何js,它将选择在DOM上呈现的第一个元素当然,因为最终在源代码中只有一个元素,而不是两个元素,因此不需要考虑HTML验证。如果在DOM中只呈现一个元素,您不会遇到任何问题。当然,因为最终在源代码中只有一个问题,而不是两个问题,因此没有任何HTML验证考虑。如果在DOM中只呈现一个问题,您将不会遇到任何问题。