2012-04-29 2 views
1

문제점 : '동적'변수를 사용하여 JSON/JavaScript 배열에 액세스하려고합니다.

# 예 # 대신

... 배열 1 []를 또는 배열 2 [] 또는도 array9000 []

뭔가를해야만 같은 ... VAR의 my_array 배열 = '어레이 '+'생성 된 숫자 ';

... 그런 다음 my_array 배열 [] 또는 my_array 배열 [몇개]

있지만 does'nt 작업 ... (하단 NOW sollution )

JavaScript 배열 이름의 변수



일부 디렉토리에서 JSON 배열을 만드는 데 필요한 PHP가 있습니다.
images0, 이미지 1, images2, 등등 ...

<?php 
     $dir = opendir(getcwd()); 
     $num=0; 
     while($folder = readdir($dir)) { 
      if($folder !== '.' && $folder !== '..'){ 
       if (is_dir($folder)) { 
        echo '<script type="text/javascript">'; 
        $folderCHILD = opendir($folder); 
        while($image = readdir($folderCHILD)) { 
         if($image !== '.' && $image !== '..'){ 
          $images[]=$folder."/".$image; 
         } 
        } 
        closedir($folderCHILD); 
        echo 'images'.$num.' ='.json_encode($images); 
        unset($images); 
        echo '</script>'; 
        $num++; 
       } 
      } 
     } 
     closedir($dir); 
    ?> 


그럼이 일부 자바 스크립트/JQuery와 :

예 JSON 배열 이름 ... json으로 어레이는 순차적으로 명명하고 이미지 디렉토리를 저장하는 그것은 클릭 함수를 통해 순차적으로 명명 된 JSON 배열에 액세스하려는 시도입니다. 이 함수는 JSON 배열에 저장된 이미지 디렉토리를 사용하여 이미지를 만듭니다.

<script type="text/javascript"> $(document).ready(function() { $('something').click(function() { var indexCURRENT = $(this).index(); var ARRAY = 'images'+indexCURRENT; $(document.createElement("img")).attr({ src: ARRAY[some number]}).addClass("image").appendTo('body'); }); }); </script> 

은 위 Javascipt/jQuery를 작동하지 않는다^^


그러나 DEV-널 거주자 코드의이 비트가하는 일에 감사 ...

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#gallery_link p').click(function() { 
      var indexCURRENT = $(this).index(); 
      var ARRAY = 'images'+indexCURRENT; 
      $(document.createElement("img")).attr({ src: window[ARRAY][some number]}).addClass("image").appendTo('body'); 
     }); 
    }); 
</script> 

차?

.attr({ src: window[ARRAY][some number]}) 
+0

시도 당신이 뭘 하려는지 가장 기본적인 형태로 아래로 증류 할 수 있습니다. 그것을 보여주기 위해 테스트 비트의 코드를 다시 작성하십시오. 따라야 할 정보가 너무 많습니다. –

답변

0

빠른 대답 : 당신의 numerated 변수 window 개체에 액세스 할 수 있어야합니다, 배열 (window['images1'])처럼 접근 때문에 단순히

{ src: window[ARRAY][1] } 

{ src: ARRAY[1]} 

변경은 작동해야한다.

적절한 답 : 사용 배열/객체, 그것은이 간단합니다 : 다음

<script> 
echo '<script type="text/javascript">'; 
echo 'images = [];'; 
$folderCHILD = opendir($folder); 
while($image = readdir($folderCHILD)) { 
    if($image !== '.' && $image !== '..' && $folder !=='resource'){ 
     $images[]=$folder."/".$image; 
    } 
} 
closedir($folderCHILD); 
echo 'images.push('.json_encode($images).');'; 
echo '</script>'; 

그리고 :

{ src: images[indexCUR][1] } 
+0

고마워요! 나는 그것을 시험해 볼거야! – Terry

+0

귀하의 의견을 보내 주셔서 감사합니다. 귀하의 '적절한'답변을 얻지 못했습니다. 아직은 아직 답변이 없습니다. 그러나 '빠른'수정본이 효과적입니다. 고맙습니다! – Terry

2

저는 JS에서 그렇게 할 수 없다고 확신합니다. 가변 내용을 변수 이름으로 사용할 수 없습니다. 이것은 PHP에서 할 수있는 곳에서 가능합니다.

$varname = 'x'; 

$$varname = "something"; 

print $x; //Prints "something" 

그러나 javascript에는 없습니다. 다차원 배열이나 해시를 사용하면됩니다.

+0

정보를 주셔서 감사합니다, 그것은 자바 스크립트에서 불가능하다는 것을 몰랐어요. @ Gaet 그래서 ... 다차원 배열로 땜질 시도했지만 너무 멀리 사촌 자바 스크립트에서 다차원 배열을 만드는 생각을 못해. 귀하의 정보 덕분에 나는 PHP 내에서 그것을 설정하려고합니다. – Terry