Javascript 如何将div Id转换为类

Javascript 如何将div Id转换为类,javascript,html,css,Javascript,Html,Css,我正在编写一个网站,可以检测用户是否在mac或pc上。我已经能够将其作为ID使用,但当我尝试将其作为类使用时,它不起作用。谁能帮忙吗 <script language="JavaScript" type="text/JavaScript"> function func1() { var x = navigator.platform; if (x == "Win32" ) { document.getElementsByClassName("pcbrowser")

我正在编写一个网站,可以检测用户是否在mac或pc上。我已经能够将其作为ID使用,但当我尝试将其作为类使用时,它不起作用。谁能帮忙吗

<script language="JavaScript" type="text/JavaScript">
function func1()
{
  var x = navigator.platform;

  if (x == "Win32" )
  {
    document.getElementsByClassName("pcbrowser").style.display = "block";
  } 
  else if (x == "MacIntel")
  {
    document.getElementById("macbrowser").style.display = "block";
  }
}

window.onload=func1

</script>


<span id="macbrowser" style="display:none">MAC</>
<span id="pcbrowser" style="display:none">Yosemite Backup Agent</p>

函数func1()
{
var x=navigator.platform;
如果(x==“Win32”)
{
document.getElementsByClassName(“pcbrowser”).style.display=“block”;
} 
else if(x==“MacIntel”)
{
document.getElementById(“macbrowser”).style.display=“block”;
}
}
window.onload=func1
雨衣
约塞米蒂备份代理


调用函数的原因是:它返回一个
节点列表,而不是单个元素。(尤其是“HTMLCollection”)

如果确实有一个这样的元素,那么:

document.getElementsByClassName("pcbrowser")[0].style.display = "block";
否则,您可以像遍历数组一样遍历节点列表。不完全像是一个数组;如果您计划对涉及的元素进行更改,那么事情可能会变得奇怪,因为API返回一个“活动”的节点列表——它动态地反映DOM的状态。但是,您可以将其内容复制到普通数组中:

var array = [].slice.call( theNodeList, 0 );

该函数被称为
getElementsByClassName()
(复数“元素”),其原因是:它返回一个
NodeList
,而不是单个元素。(尤其是“HTMLCollection”)

如果确实有一个这样的元素,那么:

document.getElementsByClassName("pcbrowser")[0].style.display = "block";
否则,您可以像遍历数组一样遍历节点列表。不完全像是一个数组;如果您计划对涉及的元素进行更改,那么事情可能会变得奇怪,因为API返回一个“活动”的节点列表——它动态地反映DOM的状态。但是,您可以将其内容复制到普通数组中:

var array = [].slice.call( theNodeList, 0 );

getElementsByClassName
返回一个包含该类所有元素的HTMLCollection,因此必须获取该HTMLCollection的第一个元素(
getElementsByClassName('pcbrowser')[0]


或者您可以使用
document.querySelector('.pcbrowser')
获取元素,点'.'代表类。如果站点必须在旧浏览器上工作,则不应执行此操作,因为它是自IE8以来唯一兼容的。

getElementsByClassName
返回一个包含该类所有元素的HTMLCollection,因此您必须获取此HTMLCollection的第一个元素(
getElementsByClassName('pcbrowser')[0]

或者您可以使用
document.querySelector('.pcbrowser')
获取元素,点'.'代表类。如果站点必须在旧浏览器上运行,则不应执行此操作,因为它是自IE8以来唯一兼容的

var elements = document.getElementsByClassName("pcbrowser");
for (var i=0, item; i<elements.length; i++) {
    elements[i].style.display = "block";
}
var elements=document.getElementsByClassName(“pcbrowser”);
对于(var i=0,item;i给你:

var elements = document.getElementsByClassName("pcbrowser");
for (var i=0, item; i<elements.length; i++) {
    elements[i].style.display = "block";
}
var elements=document.getElementsByClassName(“pcbrowser”);
对于(var i=0,item;i,这里是一个示例

HTML

<p id="pcbrowser" class="pc" style="display:none">Yosemite Backup Agent</p>
<p id="macbrowser" class="mac" style="display:none">MAC</p>
祝你好运:)

这里有一个例子

HTML

<p id="pcbrowser" class="pc" style="display:none">Yosemite Backup Agent</p>
<p id="macbrowser" class="mac" style="display:none">MAC</p>

祝你好运:)

准确地说,返回a,与之略有不同。@Teemu ok,我对术语的理解很慢:)准确地说,返回a,与之略有不同。@Teemu ok,我对术语的理解很慢:)你的HTML有点问题:据我所知,你不能有分配了属性的空元素。只需键入
将不起作用,您必须声明
或类似的内容。另外,您需要在第一个
id
上加引号。您的HTML有点问题:据我所知,您不能有指定属性的空元素。只需键入
将不起作用,您必须声明
或类似的内容。另外,您需要在第一个
id
上加引号。谢谢,但我需要将该类添加到多个标记中。我知道您想要使用类(或ID)来定位元素并更改其样式。您需要添加/更改其类别吗?如果要更改元素的类,也可以这样做。在获取元素(从上述方法之一)后,可以更改其类。示例:
element.className='newClassName'谢谢,但是我需要将类添加到多个标记中。我知道您想要使用类(或ID)来定位元素并更改其样式。您需要添加/更改其类别吗?如果要更改元素的类,也可以这样做。在获取元素(从上述方法之一)后,可以更改其类。示例:
element.className='newClassName'