2017-09-01 10 views
0

私のjQueryに小さなデータを格納しています。関数を使って配列から呼び出すが、配列を呼び出すときは値を返さない。私JSFiddle関数の配列からjqueryを呼び出す

jQueryのコード

$('button').click(showInfo); 

function showInfo(){ 
    var data = $(this).attr("dataid"); 
    //alert(data); 
    dataArray(data); 
    writeData(data); 
} 

function dataArray(call){ 
    var person1 = [{ 
     'name':'First Name', 
     'position':'Director' 
    }]; 
    var person1 = [{ 
     'name':'Second Name', 
     'position':'Director' 
    }]; 
} 

function writeData(called){ 
    $('.person').removeClass('hidden'); 
    dataArray(called[0]); 
    // write in divs 
    $('.person .name').text(dataArray(called['name'])); 
    $('.person .position').text(dataArray(called['position'])); 
} 
+2

dataArray機能です何もしませんが、2つの変数を宣言して、彼らと何もしません。また、2つの 'var person1'行の代わりに' var person2'を2番目の変数として使うことを意味していると思います。 –

+0

基本的なことは、関数が何かを返すようにするには何かを返す必要があるということです。たぶんあなたは何をしたいのかを説明するだけです。なぜなら、このコードは実際にそのことを明らかにしていないからです。 – trincot

答えて

1

はあなたのデータ書き込み呼び出しから何かを返す必要があります。この場合、人物データを含むオブジェクトのオブジェクトです。あなたは、渡された名前でそれをフィルタリングすることができ

$('button').click(showInfo); 
 

 
function showInfo() { 
 
    var data = $(this).attr("dataid"); 
 
    //alert(data); 
 
    writeData(data); 
 
} 
 

 
function dataArray() { 
 
    var persons = { 
 
    person1: { 
 
     name: 'First Name', 
 
     position: 'Director' 
 
    }, 
 
    person2: { 
 
     name: 'Second Name', 
 
     position: 'Director' 
 
    } 
 
    }; 
 
    return persons; 
 
} 
 

 
function writeData(called) { 
 
    $('.person').removeClass('hidden'); 
 
    //alert(called); 
 
    // write in divs 
 
    $('.person .name').text(dataArray()[called].name); 
 
    $('.person .position').text(dataArray()[called].position); 
 
}
.hidden { 
 
    display: none 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button dataid="person1">Call person 1</button> 
 

 
<button dataid="person2">Call person 2</button> 
 
<br/> 
 
<br/> 
 
<div class="person hidden"> 
 
    <span>Name: </span> 
 
    <div class="name"></div> 
 
    <br/> 
 
    <span>Position: </span> 
 
    <div class="position"></div> 
 
</div>

0

をあなたのコード内の二つの問題があります。あなたがする必要があるので、

  1. dataArray関数は何も返していませんがそれを以下に変更してください:

    function dataArray(call){ 
    return { 
        person1 :{ 
         name:'First Name', 
         position:'Director' 
        }, 
        person1 :{ 
        name:'Second Name', 
         position:'Director' 
        } 
    }[call]; 
    } 
    
  2. あなたが返されたオブジェクトのキーにアクセスする必要があり、それは次のようになります。

    $('.person .name').text(dataArray(called)['name']); 
    $('.person .position').text(dataArray(called)['position']); 
    

はここで働いfiddle

関連する問題