2011-07-05 14 views
1

を使用して一つ連想配列要素の一つが、私はこのコード印刷ジャバスクリプトにのみ

<script type="text/javascript"> 
var slideStart = 1; 
var slideCount = 4; 
function callArr() { 
    var arrName = {"rose":"5", "daisy":"4", 
        "orchid":"3", "sunFlower":"10", 
        "Lily":"15"}; 
    for (var flwr in arrName) { 
     if (slideStart <= slideCount) { 
      document.getElementById('test').innerHTML += flwr + 
                 " >>>>>>>> " + 
                 arrName[flwr] + 
                 "<br />"; 
      slideStart++; 
      break; 
     } 
    } 
} 
</script> 

を持っている私は、任意のイベントに個別に配列の要素にアクセスしたいです。私はこれを助けてくれますか?

+0

あなたはコードを配列に印刷しています。今、何を知りたいですか? – GolezTrol

+0

"どんなイベントでも"正確にはどういう意味ですか? – jerluc

+0

参考のため、javascriptには連想配列はありません。あなたがそこで働いているのは、実際にはオブジェクトです。連想配列として扱うと意図しない結果を招くことがあります。 http://ajaxian.com/archives/javascript-associative-arrays-considered-harmful – GordonM

答えて

2

オブジェクトのプロパティを反復処理するようにコードを修正し、この

if (slideStart <= slideCount) 

のような条件を使用するので、それは最初の要素だけを出力します。可能な解決策の一つ:

var slideStart = 0; 
var slideCount = 4; 
function callArr() { 
    var arrName = {"rose":"5", "daisy":"4", 
        "orchid":"3", "sunFlower":"10", 
        "Lily":"15"}; 
    var i = 0; 
    for (var flwr in arrName) { 
     if (i == slideStart) { 
      document.getElementById('test').innerHTML += flwr + 
                 " " + 
                 arrName[flwr] + 
                 "<br />"; 
      slideStart++; 
      break; 
     } 

     i++; 
    } 
} 

ここでそれを試してみてください:あなたが見ることができるようにhttp://jsfiddle.net/2nDv8/

は、それがすべての呼び出しの後に次のプロパティを表示します。

+0

ありがとうございました....私は何を探していたのですか? ... Genuis :) – Mahima

+0

もう1つのクエリ。この配列を逆の順序で印刷することは可能ですか? – Mahima

+0

これを試してみてください:http://jsfiddle.net/2nDv8/1/ –

0

ループ内に"break"を置くので、1回だけ印刷されます。このコードは問題なくすべての要素を出力します。 1つの問題は、slideStartslideCountという変数によっても発生します。あなたがそれらのすべてを印刷したい場合は、すべての要素を印刷するように、0にslideStartを変更するだけではなく、4 those..Hopeのに役立つこと:

function callArr() { 
    var arrName = {"rose":"5", "daisy":"4", 
        "orchid":"3", "sunFlower":"10", 
        "Lily":"15"}; 
    for (var flwr in arrName) { 
     if (slideStart <= slideCount) { 
      document.getElementById('test').innerHTML += flwr + 
                 " >>>>>>>> " + 
                 arrName[flwr] + 
                 "<br />"; 
      slideStart++; 
      //break; 
     } 
    } 
} 
1

をあなたはanywereにアクセスするために参照する場合は、あなたが宣言することができgloblaのVARとしてそれ:

<script type="text/javascript"> 
var slideStart = 1; 
var slideCount = 4; 
var arrName = {"rose":"5", "daisy":"4", 
        "orchid":"3", "sunFlower":"10", 
        "Lily":"15"}; //Declare var outside, so it's global 
function callArr() {  
    for (var flwr in arrName) { 
     if (slideStart <= slideCount) { 
      document.getElementById('test').innerHTML += flwr + 
                 " >>>>>>>> " + 
                 arrName[flwr] + 
                 "<br />"; 
      slideStart++; 
      //break; //This prevents from showing more. Erase it 
     } 
    } 
} 
</script> 

はまたbreak文は最初の要素だけ

・ホープこのことができますを表示させたことに注意してください。歓声

1

これはブラウザとの互換性が厳密ではありませんが、Object.keys(arrName)を使用できます。実際には、ブラウザ間の互換性について実際に心配している場合は、同じように動作する配列を作成して格納してください。もちろん

0

これはおそらくあなたが望むものです。ここで試してください:http://jsfiddle.net/Hsn4c/1/

function callArr() { 
    var slideStart = 0; 
    var slideCount = 4; 

    var arrName = { 
     "rose": "5", 
     "daisy": "4", 
     "orchid": "3", 
     "sunFlower": "10", 
     "Lily": "15" 
    }; 
    for (var flwr in arrName) { 
     if (slideStart <= slideCount) { 
      document.getElementById('test').innerHTML += flwr + ">>>>>" + arrName[flwr] + "<br />"; 
      slideStart++; 
      //break; 
     } 
    } 
    document.getElementById('test').innerHTML += '==========<br />'; 
} 
+0

お返事ありがとうございました....一度にすべての値を印刷しています...リンクをクリックすると、最初の要素が印刷されます。 2回目のクリック、2番目の要素など。 – Mahima