2017-09-01 70 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中的函數什麼都不做,但聲明兩個變量,然後什麼也不做他們。另外我認爲你的意思是將'var person2'作爲第二個變量,而不是2'var person1'行 –

+0

一個基本的事情是,如果你想讓一個函數返回一些你需要返回的東西。也許你應該解釋你想要發生的事情,因爲這段代碼並沒有真正揭示這一點。 – trincot

回答

1

您需要從dataWrite調用返回的東西。在這種情況下是具有個人數據的對象的對象。那麼你可以通過傳入的名稱篩選

$('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