通过 Titanium 中的 ID 更改视图的背景颜色
change background color of view by its ID in Titanium
我有几个视图使用 for 动态添加到 ScrollView,但是当用户单击其中一个视图时,我想更改视图的背景颜色。我有以下点击事件代码:
(function() {
var id = i;
viewQuantity.addEventListener('click', function(e) {
viewQuantity.backgroundColor = '#FFFFFF';
});
})();
但是使用此代码,更改颜色的视图始终是最后添加的视图。如何使用 id 更改用户点击的视图?
在单击事件中,您在函数中得到一个事件 属性 作为第一个参数。这有 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;
});
})();
要稍后更改颜色,您可以存储对对象的引用,然后再更改颜色
尝试这样的事情:
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;
});
})();
}
我有几个视图使用 for 动态添加到 ScrollView,但是当用户单击其中一个视图时,我想更改视图的背景颜色。我有以下点击事件代码:
(function() {
var id = i;
viewQuantity.addEventListener('click', function(e) {
viewQuantity.backgroundColor = '#FFFFFF';
});
})();
但是使用此代码,更改颜色的视图始终是最后添加的视图。如何使用 id 更改用户点击的视图?
在单击事件中,您在函数中得到一个事件 属性 作为第一个参数。这有 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;
});
})();
要稍后更改颜色,您可以存储对对象的引用,然后再更改颜色
尝试这样的事情:
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;
});
})();
}