2017-02-23 37 views
0

我在編碼M個新的,並且我米尋找一種方法以從生成的按鈕JS-調用來自生成按鈕的方法爲特定對象

我啓動我的陣列的每一個對象的一個​​具體樣品的方法已經有json數據循環,並將每個對象包含在一個js數組中。

//我的數據得到了3個對象

var readArr = JSON.parse(myData) 

var js_arr = []; 
對象

for (var i = 0; i < readArr.length; i++) { 

    var generatedObject = new Object(); 

// init方法的陣列從原型上

//循環

generatedObject.init(readArr[i].prop1, readArr[i].prop2, readArr[i].prop3, readArr[i].prop4, readArr[i].prop5, 
      readArr[i].prop6, readArr[i].prop7, readArr[i].prop8); 

    js_arr.push(generatedObject); 

//產生的div將包含每個發生的按鈕

var newCntent = document.createElement('div'); 
    newCntent.id = readArr[i].prop1 + i; 
    newCntent.className = "cntent"; 
    document.getElementById('zone_btn').appendChild(newCntent); 

//股利

var newBtn = document.createElement('div'); 
    newBtn.id = i + readArr[i].prop1; 
    newBtn.className = "etalonBtn"; 
    newBtn.innerHTML = readArr[i].prop1; 
    document.getElementById(newCntent.id).appendChild(newBtn); 

我已經得到了我的對象類的原型方法和我要的是啓動該方法與按鈕相連的每個對象中創建一個按鈕。 第一個生成的按鈕將啓動用於js_arr方法[0],第二個針對js_arr [2],...如何代碼的事實,當我點擊該按鈕時,該方法必須是「的對象調用陣列permetted你的創作」

我不會對我可以做到這一點的方式任何線索我試過幾件事情:

newBtn.addEventListener('click', function() { 

     read_arr[i].DisplayUpdate(); 
    }); 

}; 

(返回read_arr [i]不定義),所以我只是想通過這個現在着名的改變read_arr [i]:「數組的對象,它滲透了你的創作」! ,我真的需要這個幫助...

感謝您的期待和遺憾,這個幼兒園英語。

+0

你在哪裏設置的事件監聽器?它在循環內嗎? – Shtut

+0

是的,這是一個壞主意嗎?這個概念是生成與相關的onclick事件的按鈕,但我不知道它是否相關... –

回答

0

問題是,當你到達點擊功能(即 - 實際上點擊按鈕時),你已經不在循環中,所以js不知道什麼是'read_arr[i]'

您需要通過'read_arr[i]'作爲參數傳遞給函數。 基本上是這樣的:

newBtn.addEventListener('click', function (object) { 
     object.DisplayUpdate(); 
    },js_arr[i]); 

這將改變功能的signiture也採取一個參數 - object,並且還通過js_arr[i]作爲參數。

希望幫助

+0

首先非常感謝,然後,我會嘗試! –

+0

現在新的問題,調試器返回:對象。DisplayUpdate不是一個函數,它似乎沒有將我生成的對象識別爲類我的類。 –

+0

我試圖在警報(JSON.stringify(object))等onclick事件上啓動警報;它返回我{「是Trusted」:true}而不是我的對象值,請問這是什麼意思?再次,我很抱歉,所以我必須誤解幾件事情...... –

0

,你也可以指定並綁定要調用的函數,當你在你的循環創建按鈕:

var newBtn = document.createElement('div'); 
    newBtn.id = i + readArr[i].prop1; 
    newBtn.className = "etalonBtn"; 
    newBtn.innerHTML = readArr[i].prop1; 
    newBtn.onclick = jsArr[i]; 
相關問題