我有几个视图通过for动态添加到ScrollView,但是当用户点击其中一个视图时,我想更改视图的背景颜色。我有点击事件的以下代码:
After Build
但是使用此代码,更改颜色的视图始终是最后添加的视图。如何使用id更改用户单击的视图?
答案 0 :(得分:1)
在单击事件中,您将函数中的事件属性作为第一个参数。这有source
对象,这是用户点击的元素。
var clickedView;
(function() {
var id = i;
viewQuantity.addEventListener('click', function(e) {
if (clickedView){
clickedView.backgroundColor= '#000000'; // put your own color here to restore original
}
e.source.backgroundColor = '#FFFFFF';
clickedView = e.source;
});
})();
要稍后更改颜色,您可以存储对象的引用,并稍后更改颜色
答案 1 :(得分:0)
尝试这样的事情:
var scrollView = Ti.UI.createScrollView();
var lastClickedView;
for(var i = 0;i<=10;i++){
(function(){
var view = Ti.UI.createView();
var label = Ti.UI.createLabel();
view.add(label);
scrollView.add(view);
view.addEventListener('click',function(){
if(lastClickedView){
lastClickedView.backgroundColor = '#000';
lastClickedView.children[0].color = '#000';
}
view.backgroundColor = '#fff';
label.color = '#fff';
lastClickedView = view;
});
})();
}