Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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变量值更改元素的类?_Javascript - Fatal编程技术网

如何根据javascript变量值更改元素的类?

如何根据javascript变量值更改元素的类?,javascript,Javascript,我有以下脚本: <script> window.now = some_int_value; </script> window.now=some_int_值; 以及以下html: <span class="dot"></span>&nbsp; <span class="dot active"></span>&nbsp; <span class="dot"></span>&

我有以下脚本:

<script>
  window.now = some_int_value;
</script>

window.now=some_int_值;
以及以下html:

<span class="dot"></span>&nbsp;
<span class="dot active"></span>&nbsp;
<span class="dot"></span>&nbsp;
<span class="dot"></span>&nbsp;

如何根据
window.now
value更改点的样式?所以,若它等于1,那个么第一个点应该是“激活的点”,若它等于2,那个么第二个点,依此类推

document.getElementsByClassName("dot")[window.now-1].className += " active";
您可以这样做(对于IE9+和所有其他主流浏览器)

或者你可以使用

document.querySelectorAll(".dot")[window.now-1].className += " active";
适用于IE8+、FF3+和所有其他主要浏览器

或者你可以把它们结合起来

if(document.getElementsByClassName);
    document.getElementsByClassName("dot")[window.now-1].className += " active";
else if(document.querySelectorAll)
    document.querySelectorAll(".dot")[window.now-1].className += " active";

您可以这样做(对于IE9+和所有其他主流浏览器)

或者你可以使用

document.querySelectorAll(".dot")[window.now-1].className += " active";
适用于IE8+、FF3+和所有其他主要浏览器

或者你可以把它们结合起来

if(document.getElementsByClassName);
    document.getElementsByClassName("dot")[window.now-1].className += " active";
else if(document.querySelectorAll)
    document.querySelectorAll(".dot")[window.now-1].className += " active";

这不应该是一个4点进度条/按钮吗?如果是这样的话,我会说只要使用gif——有一个网站可以为您生成它们:

这不应该是一个4点的进度条/按钮吗?如果是这样的话,我会说只使用GIF——有一个网站可以为你生成:

你应该考虑一下,这简化了很多DOM的工作。 这就是jQuery中的指示符所需的全部内容:

$('span.dot').eq(window.now - 1).addClass('active');
不再

  • “也许我应该给每个点分配一个ID”
  • “getElementByTagName()未在某种程度上模糊的浏览器中实现”
  • “这在IE8中不起作用”

你应该考虑一下,这简化了很多DOM的工作。

这就是jQuery中的指示符所需的全部内容:

$('span.dot').eq(window.now - 1).addClass('active');
不再

  • “也许我应该给每个点分配一个ID”
  • “getElementByTagName()未在某种程度上模糊的浏览器中实现”
  • “这在IE8中不起作用”
    • 这应该可以做到:

      var dots = document.querySelectorAll( '.dot' );
      
      [].slice.call( dots ).forEach( function ( dot, i ) {
          dot.className = 'dot' + ( window.now === i + 1 ? ' active' : '' );
      });
      
      (这在IE8中不起作用。)

      现场演示:

      (演示显示,即使2.dot设置了类“活动”,window.now=3;也会导致该类“移动”到3.dot。)

      这应该可以做到:

      var dots = document.querySelectorAll( '.dot' );
      
      [].slice.call( dots ).forEach( function ( dot, i ) {
          dot.className = 'dot' + ( window.now === i + 1 ? ' active' : '' );
      });
      
      (这在IE8中不起作用。)

      现场演示:


      (演示显示,即使2.dot设置了类“active”,但
      window.now=3;
      将导致该类“移动”到3.dot。)

      getElementsByClassName在IE7中没有实现,而且(我相信在IE8中也是如此)嗯,可能我应该为每个点分配id?@LA_u如果可以的话,这将使它更适合跨浏览器。IE7中没有实现EgeletentsByclassName,而且(我相信IE8中也是如此)嗯,可能我应该为每个点分配id?@LA_u如果可以的话,这将使它更适合跨浏览器,它不是进度条-它将显示活动页面(如在iphone主屏幕上)。不,它不是进度条-它将显示活动页面(如在iphone主屏幕上)。