2011-07-05 40 views
1

我有這樣的代碼打印關聯數組元素一個通過使用JavaScript一個只有

<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

只是FYI,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

只是一個更多的查詢。是否有可能以相反的順序打印這個數組? – Mahima

+0

試試這個:http://jsfiddle.net/2nDv8/1/ –

0

它只打印一次,因爲您在循環中放入"break"。這段代碼將打印所有元素沒有問題。一個問題也是由您的slideStartslideCount變量引起的。如果你想打印所有這些,改變slideStart爲0,以便將打印的所有元素,而不僅僅是those..Hope的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; 
     } 
    } 
} 
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

謝謝4的回覆....它現在打印所有的價值一次...我想,當我點擊一個鏈接,第一個元素打印。然後在第二次點擊,第二個元素,等等.... – Mahima

相關問題