2014-03-26 72 views
1

如果另一個函數更改字體大小,我想更改dom元素的顏色。如果元素髮生變化,jquery數組向上和向下計數

例如: HTML:

<p id="hi"> 
    VALUE 
</p> 

的jQuery:

fancyColors = { 
    1: "blue", 
    2: "green", 
    3: "yellow", 
    6: "#97bf0d" 
}; 

$(function() { 
    $("#hi").on("change", function() { 
     var valuE = $('#hi'); 
     valuE.css("color", fancyColors[1]); 
     var getSize = $('#hi').css("font-size"); 
     if (getSize != 16) { 
      valuE.fancyColors[1++] 
     } else { 
      valuE.fancyColors[2--]; 
     } 
    }); 
}); 

默認字體大小應該是16現在,如果什麼都無所謂什麼或誰它的變化少它應該在顏色數組中計數。

如果字體大小變小,它應該在數組中倒數。

我該怎麼做?

感謝您的幫助

+0

讓它成爲小提琴。 – Govan

+0

不理解問題。你的意思是如果小於16 =>向上計數,如果字體大小較低=>確實倒計數。但看到字體大小小於16就更低了,應該是向上計數還是向下計數? –

+0

你是說如果字體大於16,它應該增加索引,如果小於16,那麼它應該減少? –

回答

2

試試這個,

fancyColors = { 
    0: "blue", 
    1: "green", 
    2: "yellow", 
    3: "#97bf0d" 
}; 

$(function() { 
    var i=0; 
    $("#hi").on("change", function() { 
     var valuE = $(this); // use $(this); 
     if(i==4){// reinit i to 0 
      i=0; 
     } 
     if(i<0){ 
      i=3;// set max limit 
     } 
     valuE.css("color", fancyColors[i]); 
     var getSize = valuE.css("font-size"); 
     if (parseInt(getSize,10) != 16) { // parseInt to remove px from font-size 
      i++; // use i++, and fancyColors is not an object of valuE 
     } else { 
      i--; // use i-- 
     } 
    }); 
}); 

,如果你想trigger change event automatically然後嘗試DOMSubtreeModified就像你不能用valuE.fancyColorsfancyColors不是valuE

Demo

更新的對象,

$("#hi").on("DOMSubtreeModified", function() { 

Updated Demo

+0

它說:TypeError:valuE.fancyColors是未定義的 \t valuE.fancyColors [i ++]; //使用i ++ –

+0

它確實會改變顏色。謝謝 –

+0

如果我用「點擊」替換它就可以。如果我改變它來改變它什麼也不做。 –

0

使用單擊方法而不是更改方法。並且有像1 ++這樣的語法錯誤。你不能增加這樣但我++通過使用循環:

fancyColors = { 
      1: "blue", 
      2: "green", 
      3: "yellow", 
      6: "#97bf0d" 
     }; 

     $(function() { 
      $("#hi").on("click", function() { 

if(!this.defaultValue){ 
      var valuE = $('#hi'); 
     for(var i=0;i<fancyColors.length;i++){ 
      valuE.css("color", fancyColors[i]); 
      var getSize = $('#hi').css("font-size"); 
     if(getSize != 16) { 
      valuE.fancyColors[i++] 
     } else { 
      valuE.fancyColors[i--]; 
     } 
    } 
} 
     }); 
     }); 

變化僅用於輸入元素類型。

+0

但它不應該在點擊事件中被激活。如果有任何變化,它應該是有效的。有更好的功能或方法嗎? –

+0

根據您的評論我更新了我的答案。 this.defaultValue ..... –

+0

它不工作 –