2017-09-01 50 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