2016-02-25 39 views
0

我有幾個視圖用for來動態添加到ScrollView,但是當用戶點擊其中一個視圖時,我想更改視圖的背景顏色。我有以下代碼單擊事件:在鈦中改變其背景顏色的視圖

(function() { 
    var id = i; 
    viewQuantity.addEventListener('click', function(e) { 
     viewQuantity.backgroundColor = '#FFFFFF'; 
    }); 
})(); 

但與此代碼的視圖,更改顏色始終是最後一個添加視圖。我如何使用id來更改用戶點擊的視圖?

+0

你應該「鈦」添加到您的題。我使用iOS標籤找到了您的問題,並且可以在本機iOS應用程序中爲您提供幫助,但對Titanium幾乎一無所知。 (對不起) –

+0

恩,@Manuel_Rodrigues!請提供更多關鍵代碼或詳細告訴我們您的問題。 –

+0

變量'id'是視圖的ID。所以我點擊它,並顯示警告點擊視圖ID顯示1礦石2礦石3取決於哪些被按下。但是現在我想改變用戶點擊的視圖的背景顏色。我唯一的Id代碼是我發佈的代碼。如果有更好的方法來設置一個ID到一個視圖然後改變它的背景顏色的點擊事件我感謝如果你冷電話如何實現它。我不使用合金文件夾 –

回答

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; 
    }); 
})(); 

以後要更改顏色,你可以存儲對象的引用,並改變顏色後

+0

謝謝它已經爲我的問題工作,但現在我試着相同的代碼來改變標籤的顏色與下面的行(e.source.labelX.color ='黑色')它給了我一個錯誤說undefined不是對象 –

+0

我添加了恢復原始顏色的答案。如果它對你有幫助,請註冊並將答案標記爲解決方案;) –

+0

我將e.source.backroundColor更改爲viewQuantity.backgroundColor,clickedView = e.souce clickedView = viewQuantity,因爲我在視圖中有一個標籤,當我點擊標籤上被改變的背景顏色是標籤的顏色而不是視圖,因爲e。當我點擊它而不是視圖時,source返回標籤的對象。但謝謝你的建議幫助了我。 –

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; 
     }); 
    })(); 
} 
+0

第二部分o您的帖子已經改變了桌子的顏色,但是當我點擊桌子頂部而不是視圖時,我變成了新的錯誤。爲什麼事件在標籤和視圖中的點擊激活? –

+0

我的不好。 'e.source'可能是標籤,所以'e.source.children'可能會引發錯誤。只需使用第一個解決方案。它應該工作正常。預計點擊標籤時會觸發'click',因爲它會被添加到視圖中,並且事件會冒泡。 – Shawn

+0

它已完全工作,但現在想象我有兩個視圖,當我點擊第一個視圖時,它改變了背景顏色。當我點擊第二個視圖時,它也會更改背景顏色,但是當我點擊第二個視圖時,我需要重置第一個視圖的背景顏色。我怎樣才能做到這一點? –