2017-04-02 126 views
0
const style1=['50%','3.5vw','3.5vw','2.5vw','2.5vw'] 
const style2=['0%','22.5%','95%','2.5vw','2.5vw'] 

function addbuttonAnimation() { 
    let applied = (document.activeElement.id === 'add-order') ? [].concat(style2) : [].concat(style1) 
    let x = document.querySelector('#add-order') 

    function goStyle(...applied) { 
     x.style.borderRadius = applied[0] 
     x.style.width =applied[1] 
     x.style.height =applied[2] 
     x.style.bottom =applied[3] 
     x.style.right =applied[4] 
    } 

    goStyle(...applied) 
} 

document.querySelector('#add-order').addEventListener("mouseup", addbuttonAnimation, false); 
document.querySelector('main-wrap').addEventListener("mouseup", addbuttonAnimation, false); 

我怎麼知道我的「應用」數組值已經改變(與以前的調用有相同的值)?所以無論何時調用「addbuttonAnimation()」,如果「applied」數組與前一個invoke具有相同的值,則無需再次重新分配任何值。如何檢查數組是否具有相同的值?

回答

1

indexOf()方法在數組中搜索指定的項目並返回其位置。

搜索將從指定的位置開始,或者如果未指定開始位置,則開始搜索,並在數組末尾搜索結束。

如果未找到該項目,則返回-1。

如果該項目不止一次出現,則indexOf方法將返回第一個匹配項的位置。

注意:第一個項目的位置爲0,第二個項目的位置爲1,依此類推。

提示:如果您想從端搜索開始,使用lastIndexOf()方法

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var a = fruits.indexOf("Apple"); 

的結果將是:2

0

您可以使用underscore.js#intersection,以避免額外的痛苦書寫

let prevApplied = []; 

function addbuttonAnimation() { 

    let applied = (document.activeElement.id === 'add-order') ? [].concat(style2) : [].concat(style1) 
    var boolStyleDiff = _.intersection(prevApplied, applied); 

    if (!boolStyleDiff) { 

    return false; //to avoid call to goStyle() 
    } 

    prevApplied = applied; //saved previously applied 
    let x = document.querySelector('#add-order') 

    function goStyle(...applied) { 
    //code 
    } 

    goStyle(...applied) 
} 
+0

感謝您的幫助先生..即時通訊仍然沒有信心與我的JavaScript,所以我決定不使用任何圖書館和框架,希望可以開發我的自我更好..和你是對的,它的痛苦哈哈:D – Chieftian

+0

所以,你可以寫你自己的交集邏輯 –

相關問題