<!-- TODO FIXME: resistance calculator -->
ohmStr = String.fromCharCode(937)
base10 = Math.log(10)
function preLoad () {
// preload color-band images
arrCols = new Array()
srcBase = document.getElementById('sel1')
for (i = 0; i < srcBase.length; i++) {
arrCols[i] = srcBase.options[i].value
}
arrImg = new Array()
for (i = 0; i < arrCols.length; i++) {
for (j = 0; j < 3; j++) {
arrImg[i * 3 + j]
= new Image()
arrImg[i * 3 + j].src = 'images/band_' + arrCols[i]
+ (j + 1).toString() + '.jpg'
}
}
pre1 = new Image()
pre1.src = 'images/band_d3.jpg'
pre2 = new Image()
pre2.src = 'images/band_s3.jpg'
pre3 = new Image()
pre3.src = 'images/band_mult_s.jpg'
}
function selCol (what, band) {
// display color-band image
eval(`document.getElementById('band' + band + '').src = 'images / band_' + what.value + band + '.jpg';`)
}
function selTol () {
// display tolerance band, set tolerance numeric dropdown
document.getElementById('mult').src = 'images/band_mult_' + document.getElementById('tolerance').value + '.jpg'
document.getElementById('tolNum').selectedIndex = document.getElementById('tolerance').selectedIndex
calc()
}
function tolRev () {
// display tolerance band, set tolerance color dropdown
document.getElementById('tolerance').selectedIndex = document.getElementById('tolNum').selectedIndex
document.getElementById('mult').src = 'images/band_mult_' + document.getElementById('tolerance').value + '.jpg'
calc()
}
function calc () {
// calculate values from color selections
pow = document.getElementById('sel3').selectedIndex
if (pow == 10) pow = -1 //gold
if (pow == 11) pow = -2 //silver
// note: Multiplied resistance value by 100 (pow+2), rounded to nearest integer, then divided
// result by 100 to compensate for Javascript exponentiation errors (only need 2 significant digits)
res = Math.round((document.getElementById('sel1').selectedIndex *
10 + document.getElementById('sel2').selectedIndex) * Math.pow(10, pow + 2)) / 100
if (res > 990000) {
document.getElementById('multSel').selectedIndex = 2
res /= 1000000
} else if (res > 990) {
document.getElementById('multSel').selectedIndex = 1
res /= 1000
} else { document.getElementById('multSel').selectedIndex = 0 }
if (res > 999) {
res = res.toString()
res = res.substr(0, res.length - 3) + ',' + res.substr(res.length - 3, 3)
}
tolOut = 5 *
Math.pow(2, document.getElementById('tolerance').selectedIndex)
document.getElementById('txtNum').value = res
}
function calcRev () {
// calculates color selections from numeric input
// convert input to ohms
document.getElementById('errSpan').innerHTML = ''
base = document.getElementById('txtNum').value
if (parseFloat(base).toString() == 'NaN') return false
if (base == 0) return false
multBy = Math.pow(1000, document.getElementById('multSel').selectedIndex)
res = base * multBy
if ((res > 99000000000) || (res < .1)) {
inputError()
return false
}
raisedTo = Math.floor(Math.log(res) / base10)
res = Math.round(res / Math.pow(10, raisedTo - 1)) / 10
d1 = Math.floor(res)
d2 = Math.round((res - d1) * 10)
if (d1 == 10) {
d1 = 1
d2 = 0
raisedTo += 1
}
mIndex = raisedTo - 1
if (mIndex == -1) mIndex = 10
if (mIndex == -2) mIndex = 11
document.getElementById('sel1').selectedIndex = d1
selCol(document.getElementById('sel1'), 1)
document.getElementById('sel2').selectedIndex = d2
selCol(document.getElementById('sel2'), 2)
document.getElementById('sel3').selectedIndex = mIndex
selCol(document.getElementById('sel3'), 3)
}
function inputError () {
for (i = 1; i < 4; i++) {
eval(`document.getElementById('sel' + i + '').selectedIndex = 0;`)
eval(`document.getElementById('band' + i + '').src = 'images / band_k' + i + '.jpg';`)
}
document.getElementById('errSpan').innerHTML = 'out of range'
}
black brown red orange yellow green blue violet gray white black brown red orange yellow green blue violet gray white black brown red orange yellow green blue violet gray white gold silver gold silver brown red
**document.write(ohmStr) kdocument.write(ohmStr) Mdocument.write(ohmStr)�5% �10% �1% �2%**
Wait for colours to download
Quick Links
Legal Stuff
Social Media