2017-08-21 36 views
0

這是Microsoft Excel中的條件格式設置功能,其中彩條表示與最高值相比較的百分比。Angular中的條件格式

Conditional formatting in excel

反正是有使用HTML5無論是CSS或JavaScript來實現這一目標?或者也可以使用額外的Angular庫。

我正在考慮使用clip-path至但是這個功能可能不會獲得廣泛支持所有瀏覽器

回答

1

你的意思是this

你可以在vanillaJS中做到這一點。你必須得到所有元素

const elNodes = document.querySelectorAll('.element'); 
const elements = [...elNodes]; 

獲取他們的價值觀,並找到最大值

const elementsValues = elements.map((el) => parseFloat(el.children[1].textContent)); 
const maxValue = Math.max(...elementsValues); 

最後更改元素的寬度基於價值:

elements.forEach((el) => { 
    el.children[0].style.width = 100/(maxValue/parseFloat(el.children[1].textContent)) + '%'; 
}); 
+0

這似乎是工作如我所料在Chrome中,但在Edge中,它會在'const elements = [... elNodes]'這一行失敗;'錯誤'SCRIPT5002:Function expected test.html(13,13)'https://docs.microsoft.com/ EN-US /腳本/ JavaScript的/其它/功能 - 教人口會d。什麼'...'在JavaScript中意味着什麼?它真的很難谷歌'......( – LxL

+0

它是傳播運算符,這意味着當你有例如一個數組的數值,傳播運算符將提取他們全部。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator 這是ES6中添加的新功能,因此您可以將其替換爲: const elements = Array.prototype.slice.call(elNodes); 您必須這樣做的原因是因爲我們從DOM獲取了一個Node元素,而不是數組,因此您必須將它們轉換爲像數組一樣使用它。 – Stwosch