せいくらべ──原作 vs 実写という記事で使っているスクリプトです。
そもそも身長データが存在するキャラしかいないので問題ないんですが、ちょっともやもやするわね…
キャストの身長が高い時は
ちなみに
なお、変数が数値かどうかを判定する
(function () { 'use strict'; var $t = document.getElementsByTagName('table'); if($t == null) return; function isNumber(x){ if( typeof(x) != 'number' && typeof(x) != 'string' ) return false; else return (x == parseFloat(x) && isFinite(x)); } var tlen = $t.length; for(var i=0; i<tlen; i++){ var table = $t[i]; var c = table.getAttribute('class') || table.getAttribute('className'); if(c !='saki-tall') continue; var tr = table.getElementsByTagName('tbody')[0].getElementsByTagName('tr'); var tl = tr.length; for(var j = 0; j < tl; j++){ var td = tr[j].getElementsByTagName('td'); var tall1 = td[1].textContent * 1, tall2 = td[3].textContent * 1; if(!isNumber(tall2) || tall2 <= 0){ td[4].classList.add('noData'); } else{ var ratio = (tall2 / tall1 - 1) * 100, ri = Math.abs(parseInt(ratio * 10)); td[4].style.backgroundColor = 'rgb(' + (255 - (ratio>0? ri:0)) + ',' + (255 - ri) + ',' + (255 - (ratio<0? ri:0)) +')', td[4].textContent = ((ratio > 0)? '+': (ratio==0)? '±': '') + ratio.toFixed(1); } } } }());む、よく見たら
tall1
(キャラの身長)が0の時の場合分けをしていない。そもそも身長データが存在するキャラしかいないので問題ないんですが、ちょっともやもやするわね…
キャストの身長が高い時は
background-color
プロパティに指定するrgb()
関数の赤と緑の数値を減らして青っぽくし、低い時は青と緑の数値を減らして赤っぽくしています。ちなみに
noData
というCSSクラスは
td.noData{ background: #ccc; text-align: center!important; } td.noData::before{ content:'──'; }こんな感じ。算出元のデータが無い時、背景色をグレーにして横棒を表示します。
なお、変数が数値かどうかを判定する
isNumber()
関数は、こちら↓のサイト様の記事からコピペさせていただきました。
JavaScript で数値判定 - にょきにょきブログここに記して御礼申し上げます。
コメント