원격 소스에서 채워지는 tableView가 있습니다. 각 행에 여러 개의 버튼을 동적으로 추가합니다. 버튼과 각 행의 내용은 for 루프에 있습니다. 버튼 리스너 내에 경고 대화 상자 수신기가 있습니다. 확인 (예)을 선택하면이 버튼이 나타나면 버튼 제목을 변경할 수 있기를 원합니다. 이 오류의 원인이이벤트 리스너를 이벤트 리스너에 전달 중입니까?
Uncaught TypeError: Cannot set property 'title' of undefined.
입니다 :
나는 다음과 같은 오류가 나타날 수
btn[i].title = "Finish"
나는 순간에 코드에 액세스 할 수없는 및 준하지 않은 죄송합니다 많은 도움을 받아야 할 것이지만 어떤 도움이나 아이디어라도 크게 감사 할 것입니다 ...
편집 :
더미 코드 : addButton()
함수의 몸은 모든 코드가 될 것
for(i = 0; i < btn.length; i++) {
addButton(btn[i]);
}
function addButton(button) {
// do stuff with button
}
:
for(i = 0; i < btn.length; i++) {
// do stuff with btn[i]
}
변경 그것에 :
var btn = new Array();
btn[i] = Ti.UI.createButton({
backgroundImage: '/images/button.png',
title:'Start',
top: 0,
left: 0,
height: '20%',
width: '20%'
});
btn[i].addEventListener('click', function(e){
var alert = Titanium.UI.createAlertDialog({
title : 'Dialog',
message : 'Change Title',
buttonNames : ['Yes', 'No']
});
alert.addEventListener('click', function(e) {
if(e.index == 0) {
btn[i].title = "Finish";
}
});
alert.show();
});
tableViewRow.add(btn[i]);
for 루프 내부의 실제 이벤트 내부에서 'i'사용과 관련된 느낌이 들기 때문에 Chrome/Firefox 또는 Firebug의 기본 디버거를 통해 실행 해 봅니다.코드를 자신의 함수에 넣고 배열과 인덱스를 전달하면 문제가 해결됩니다. – Turnerj