2015-10-19 90 views
-1

我有我的網站分爲50/50%與每個自己的外觀和信息。我有一個CSS類,可以使雙方浮動左側或右側取決於它是什麼設置。我想要一個小腳本, 隨機切換類之間的頁面加載和切換到左側或右側。頁面加載類別之間的隨機切換

現在CSS類:

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

我想切換兩個階級:

.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'); 
}; 
+2

打開控制檯,檢查JavaScript錯誤。我有一種感覺,你沒有將jQuery庫包含到你的項目中。 – rottenoats

+0

你有什麼錯誤嗎? – j08691

+0

當浮子設置爲左邊時,你必須看到它,它看起來像是紅色/黑色,當我將它設置爲正確時,它是黑色/紅色。只有上面的腳本在重新加載時不會隨機切換它們。 – KP83

回答

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>

+0

真的很喜歡你認爲它不工作的方式。 – KP83

+0

@Pallum它的工作原理,多次點擊'運行代碼段',它會交換1和2 ... – ryanpcmcquen

+0

它確實!我與另一個類似的代碼混淆。謝謝! – KP83

1

就像我明白你的問題,只是嘗試這樣的:

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-1left-wrapper-1類,並添加left-wrapper-2

同爲第二:
它將從元素中刪除right-wrapper-1right-wrapper-1類,並添加right-wrapper-2

$.toggleClass:將刪除(...)中的類並添加那些不存在!

我希望這會幫助你。


編輯:後評論和澄清,

$('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>

+0

感謝您的幫助,但是當重新加載它時,它們之間不會隨機切換,所以我只看到BLACK/RED,並且不會在加載時反過來。 – KP83

+0

因爲使用toggleClass沒有隨機屬性!我不明白你試圖達到什麼目的,你能解釋一下嗎? – Anonymous0day

+0

真的很簡單,我有一個網站設計分爲50%/ 50%紅/黑紅='。左旋包裝和黑=右包裝。我知道當我手動更改兩個類的float值時,它會導致BLACK/RED只有我想實現的目標是隨機將在加載頁面上執行此操作。 – KP83

1

您在當前JS有不會做的隨機切換。它只會找到一個.left-wrapper-1類的元素,並添加一個.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); 

}); 
+0

我喜歡這個答案。如果你打算使用這個,請確保你將'div'初始類設置爲'left-wrapper'和'right-wrapper'(而不是'left-wrapper-1'和'right-wrapper-1' )。 –

+0

這應該是選擇的答案。 – ryanpcmcquen

+0

良好的調用,我注意到在CSS中它確實看起來像已經分配了這些類,但是您希望確保這些樣式不適用於這些「默認」類。爲了能夠選擇這些元素,我們真的只想使用它們。更改的樣式只能分配給.left-wrapper-1,.left-wrapper-2,而.right-wrapper-1和.right-wrapper-2也應該相同。 –

0

你的意思是這樣的:

你會需要更多的東西一樣嗎?

// 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'); 
    }; 
}); 
+0

順便說一句,[如何使用javascript隨機決定兩個數字?](http://stackoverflow.com/q/9730966/3471286) –