Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在DOM中仅呈现一个HTML元素,则多个HTML元素具有相同的id_Javascript_Html_Laravel_Solid Principles - Fatal编程技术网

Javascript 如果在DOM中仅呈现一个HTML元素,则多个HTML元素具有相同的id

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

如果dom中只呈现一个id元素,那么可以有多个相同的id元素吗? 例如,在Laravel中,您可以有:

 @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中只呈现一个问题,您将不会遇到任何问题。