页面加载时在 类 之间随机切换

Random toggle between classes on page load

我将我的网站分为 50/50%,每个部分都有自己的外观和信息。我有一个 css class 可以使两侧向左或向右浮动取决于它的设置。我想要一个小脚本 在页面加载时在 class 之间随机切换,然后向左或向右切换。

CSS class 现在:

.left-wrapper,
.right-wrapper {
  position: relative;
  float: left;
  width: 50%;
}

我想在两个 class 之间切换:

.left-wrapper-1,
.right-wrapper-1 {
  position: relative;
  float: left;
  width: 50%;
}


.left-wrapper-2,
.right-wrapper-2 {
  position: relative;
  float: right;
  width: 50%;
}

Javascript 不工作:

window.onload = function() {
     $('.left-wrapper-1').toggleClass('left-wrapper-2');
     $('.right-wrapper-1').toggleClass('right-wrapper-2');
};

就像我理解你的问题一样,就这样试试吧:

window.onload = function() {
   $('.left-wrapper-1').toggleClass('left-wrapper-1 left-wrapper-2');
   $('.right-wrapper-1').toggleClass('right-wrapper-1 right-wrapper-2');
};

它将从具有 left-wrapper-1 class 的元素中删除 class left-wrapper-1 并添加 left-wrapper-2

第二个相同:
它将从带有 right-wrapper-1 class 的元素中删除 class right-wrapper-1 并添加 right-wrapper-2

$.toggleClass :将删除 (...) 中存在的 class 并添加那些不存在的 !

希望对您有所帮助。


编辑:评论和澄清后,

$('button').click(function() {
  // the random part is here
  var id = Math.floor( Math.random() * 2 ) + 1;
  // just for debug
  $('#dbg').append('<div>' + id + '</div>');


     $('.left-wrapper').toggleClass('left-wrapper-' + id);
     $('.right-wrapper').toggleClass('right-wrapper-' + id);

});
.left-wrapper,
.right-wrapper {
  position: relative;
  float: left;
  width: 50%;
}

.left-wrapper-1,
.right-wrapper-1 {
  position: relative;
  float: left;
  width: 50%;
  background : red;
}


.left-wrapper-2,
.right-wrapper-2 {
  position: relative;
  float: right;
  width: 50%;
  background : black;
  color : #FFF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='left-wrapper'>A</div>
<div class='right-wrapper'>B</div>
<button>click me</button>
<div id='dbg'></div>

您当前拥有的 JS 不会进行随机切换。它只会找到 class 为 .left-wrapper-1 的元素,并添加一个 class 为 .left-wrapper-2 的元素。

你需要更多类似这样的东西:

$(document).ready(function(){
    // This is a ternary operator, which is just a shorthand way to 
    // do an if/else statement. This basically says, if the random number
    // is less than .5, assign "1" to the scenario variable.
    // if it is greater (or equal to), assign "2" to the variable. 
    var scenario = Math.random() < .5 ? "1" : "2"; 

    $(".left-wrapper").addClass("left-wrapper-" + scenario); 
    $(".right-wrapper").addClass("right-wrapper-" + scenario); 

}); 

你是这个意思吗?

// set a variable and give it a random boolean value
var myRandom = !Math.floor( Math.random() * 2 );

// if true (or false), toggle classes
$(document).ready(function(){
    if (myRandom) {
        $('.left-wrapper-1').toggleClass('left-wrapper-1 left-wrapper-2');
        $('.right-wrapper-1').toggleClass('right-wrapper-1 right-wrapper-2');
    };
});

这是@KennyFellows 回答的纯 JavaScript 版本:

https://jsfiddle.net/ryanpcmcquen/LwqL1ep1/

window.addEventListener('load', function() {
  // This is a ternary operator, which is just a shorthand way to 
  // do an if/else statement. This basically says, if the random number
  // is less than .5, assign "1" to the scenario variable.
  // if it is greater (or equal to), assign "2" to the variable. 
  var scenario = Math.random() < .5 ? "1" : "2";

  document.querySelector(".left-wrapper").classList.add("left-wrapper-" + scenario);
  document.querySelector(".right-wrapper").classList.add("right-wrapper-" + scenario);

});
.left-wrapper-1,
.right-wrapper-1 {
  position: relative;
  float: left;
  width: 50%;
}
.left-wrapper-2,
.right-wrapper-2 {
  position: relative;
  float: right;
  width: 50%;
}
<div class="left-wrapper">1</div>
<div class="right-wrapper">2</div>