2011-10-23 7 views
0

jqueryとナビゲーションリンク(つまり、サービスが選択されるとサービスリンクが展開されない)と一緒に、一連のdivの1つをランダムに表示しようとしています。私は、このフォーラムでこのコードをさまざまな形でさまざまな形で見つけました。そして、もし私が望むものにそれを適応させることができるかどうか、そしてそれがどういうものか疑問に思っていました。jqueryでランダムに6つの変数のうちの1つを作成する

var services = $(random1, random2, random3).get() 
      .sort(function(){return Math.round(Math.random());}).slice(0,1) 
     $(services)/*Conditions here*/; 

var random1 = false; 
var random2 = false; 
var random3 = false; 

これは本当に悪い例です。私はそれに迷ってしまいます。どんな助けでも大いに感謝され、事前に感謝します。

EDIT:以前より簡単に比較しようとしましたが、ここで実際に作業しています。私は@pstからコードを適用しようとしました。

var v1 = "hello" 
var v2 = "world" 
var control = [ 
    function (v) { v1 = v }, 
    function (v) { v2 = v } 
] 

$.each(control, function (i, fn) { 
    fn(false) 
}) 



$("a#random-btn").click(function(event){ 
    event.preventDefault(); 

    var trueIdx = Math.floor(control.length * Math.random()) 
    props[trueIdx](true) 


     if (v1 === true){ 
       $("div#small-obstacles-contain a#1 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); 
       $("div#small-obstacles-contain a#2 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); 
     } 

     if (v2 === true){ 
       $("div#small-obstacles-contain a#3 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); 
       $("div#small-obstacles-contain a#4 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); 
     } 

}); 
+0

DOM要素ではないオブジェクトをjQueryオブジェクトにラップしないでください。 jQueryを使うべきではありません。あなたは普通のjavascriptを使ってそれを行うことができます。そして、あなたがうまく機能するようにするには[Underscore.js](http://documentcloud.github.com/underscore/)を見てください。それ以外にも '$(random1、random2、random3).get()'は '[random1、random2、random3]'と同じですので、あなたがvarsをラップしてから再度ラップ解除するので、実際にjQueryを使用していません。 '$(services);'は戻り値を捨ててから何もしません。 – ThiefMaster

+0

私はリターンをまだ追加していませんでした。私はデフォルトの '.show()'でそれを持っていました。おそらく '.animation()'になるでしょう。気にする必要はありません。 – Shopmelk

答えて

1

私は、これは、本当にこのアドレスタイトルX-Yの問題である疑いがあるが、「本当に一日の終わりに希望するものを」逃すことがあります。どんな場合でも、コンセプトはいくぶん適応性があります。


私は変数を使用せず、むしろ配列/オブジェクトを使用します。

のは、(ので、我々は異なる名前を持つことができるプロパティがトグルの対象であるためシーケンス:-)を使用して、「コントロール」オブジェクトを想定してみましょう:変数が本当に希望している場合、しかし、

var obj = {a: true, b: false, "3": false, hello: "world"} 
var control = ["a", "b", "3"] 
// set all to false -- noet that $.each != $().each !!! 
$.each(control, function (i, prop) { 
    obj[prop] = false 
}) 
// set one true 
var trueIdx = Math.floor(control.length * Math.random()) 
obj[control[trueIdx]] = true 

を次いで、クロージャを使用することができる何らかの理由(これはまた、結合のための特定の任意のコードを実行するために使用することができる):コーディング

var v1 = "hello" 
var v2 = "world" 
var control = [ 
    function (v) { v1 = v }, 
    function (v) { v2 = v } 
] 
// set all to false -- noet that $.each != $().each !!! 
$.each(control, function (i, fn) { 
    fn(false) 
}) 
// set one true 
var trueIdx = Math.floor(control.length * Math.random()) 
props[trueIdx](true) 

ハッピー。

+1

"happy obfuscating"私が言っているのは;-) – zerkms

+0

@zerkmsもしあなたが悪いと思ったら... ;-) –

+0

@zerkmsコードの態度を隠そうとしています。セキュリティのためではなく、私はちょうど簡単にcomparsionを作りたかった。私は今作業中のコードを投稿しています。 – Shopmelk

関連する問題