단위환산 프로그램 소스
단위 환산 프로그램입니다.
네이버에서 제공되는 소스기반으로 작성된 것입니다.
변환 단위는 온도, 속도, 압력, 부피, 넓이, 무게 질량, 길이 입니다.
<script type="text/javascript">
var rege_0_type = "unit";
</script>
<style type=text/css>
.contents_unit {padding:8px 0 10px 0; min-width:760px; }
.contents_unit h3 {padding:0 0 0 14px }
</style>
<div class=contents_unit>
<table border=0 cellpadding=0 cellspacing=0 width=760>
<tr>
<td height=13></td>
</tr>
</table>
<table cellspacing=0 cellpadding=0 border=0>
<tr>
<td width=35 nowrap></td>
<td width=667>
<table border=0 cellpadding=0 cellspacing=1 bgcolor=#C3CACD width=100%>
<tr>
<td bgcolor=#FFFFFF valign=top>
<table border=0 cellpadding=0 cellspacing=0>
<tr height=2>
<td width=2></td>
<td width=146></td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=146></td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=215></td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=140></td>
<td width=2></td>
</tr>
<tr height=25 align=center>
<td width=2></td>
<td width=146 bgcolor=#F1F6F8 style='color:#275361'>변환할값</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=146 bgcolor=#F1F6F8 style='color:#275361'>현재단위</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=215 bgcolor=#F1F6F8 style='color:#275361'>변환할단위</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=140 bgcolor=#F1F6F8 style='color:#275361'>결과</td>
<td width=2></td>
</tr>
<tr height=30 align=center>
<td width=2></td>
<td width=146>
<input type=text style='width:140px;height:19px;border:1px solid #C3CACD;padding:3 0 0 2;' id=sValue>
</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=146>
<!-- 현재단위 -->
<select id='sFrom' style='font-family:굴림,gulim;font-size:12px;color:black;width:146px;height:19px;margin:0 0 -1 0;' onChange='selectFromOptions()'>
<option value=''>- 단위를 선택하세요 -</option>
</select>
<script type="text/javascript"></script>
</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=215>
<!-- 환할단위 -->
<select id='sTo' style='font-family:굴림,gulim;font-size:12px;color:black;width:146px;height:19px;margin:0 0 -1 0;'>
<option value=''>- 단위를 선택하세요 -</option>
</select>
<a target=_blank onclick="unitCalcDisplay(); unitCalcDisplay();return false;" href=#>검색</a>
</td>
<td width=2></td>
<td width=1 bgcolor=#D6DEE1></td>
<td width=2></td>
<td width=140>
<input type=text style='width:140px;height:19px;border:1px solid #ACC684;background-color:#FCFFF6;padding:3 0 0 2;' id=sResult readonly>
</td>
<td width=2></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding=0 cellspacing=0 border=0 style='margin:10 0 0 0;'>
<tr>
<td>
<span class='o'>단위 변환</span>: 변환할 값에 숫자를 입력하고, 현재단위 및 변환할 단위를 선택한 후 변환하기 버튼을 누르면 단위가 변환됩니다
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var unitTable = new Array();
// length
unitTable[0] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 길이 --------------",""),
Array(1000000, "밀리미터", "mm"),
Array(100000, "센티미터", "cm"),
Array(1000, "미터", "m"),
Array(1, "킬로미터", "km"),
Array(39370.0789, "인치", "inch"),
Array(3280.84, "피트", "ft"),
Array(1093.613, "야드", "yd"),
Array(0.6213711922373339, "마일", "mile"),
Array(3300, "자", "尺"),
Array(550, "간", "間"),
Array(9.17, "정", "町"),
Array(2.546, "리", "里")
);
// weight
unitTable[1] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 무게 질량 ---------",""),
Array(1000000, "밀리그램", "mg"),
Array(1000, "그램", "g"),
Array(1, "킬로그램", "kg"),
Array(0.001, "톤", "ton"),
Array(15432, "그레인", "grain"),
Array(35.273, "온스", "oz"),
Array(2.20459, "파운드", "lb"),
Array(266.666, "돈", null),
Array(1.6666, "근", null),
Array(0.26666, "관", null),
Array(26.6666, "냥", null)
);
// area
unitTable[2] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 넓이 --------------",""),
Array(9917.4, "평방미터", "m²"),
Array(99.174, "아르", "a"),
Array(106749, "평방피트", "ft²"),
Array(11861, "평방야드", "yd²"),
Array(2.4506, "에이커", "acre"),
Array(0.99174, "헥타아르", "ha"),
Array(108000, "평방자", null),
Array(3000, "평", null),
Array(10, "단보", null),
Array(1, "정보", null)
);
// volume
unitTable[3] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 부피 --------------",""),
Array(10, "데시리터", "㎗"),
Array(1000, "밀리리터", "㎖"),
Array(1, "리터", "ℓ"),
Array(1000, "입방센치", "cm³"),
Array(0.001, "입방미터", "m³"),
Array(61.027, "입방인치", "in³"),
Array(0.03531, "입방피트", "ft³"),
Array(0.00130, "입방야드", "yd³"),
Array(0.26418, "갤론", "gallon"),
Array(1000, "씨씨", "cc"),
Array(5.54352, "홉", null),
Array(0.554352, "되", null),
Array(0.0554352, "말", null),
Array(0.00629326, "배럴", "bbl")
);
// pressure
unitTable[4] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 압력 --------------",""),
Array(1, "atm", null),
Array(14.695949, "psi", null),
Array(1.033227, "kgf/cm²", null),
Array(101325, "Pa", null),
Array(101.325, "kPa", null),
Array(1.01325,"bar", null),
Array(1013250, "dyne/cm²", null),
Array(760, "mmHg", null),
Array(29.921, "inHg", null),
Array(10332.274528, "mmH₂O", null),
Array(406.782462, "inchH₂O", null),
Array(1013.25, "mb", null),
Array(1013.25, "hPa", null)
);
// temperature
unitTable[5] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 온도 --------------",""),
Array(null, "섭씨온도", "℃"),
Array(null, "화씨온도", "℉"),
Array(null, "절대온도", "K"),
Array(null, "°R", null)
);
// speed
unitTable[6] = new Array(
Array('',"- 단위를 선택하세요 -",""),
Array('',"- 속도 --------------",""),
Array(1, "m/s", null),
Array(3600, "m/h", null),
Array(0.001, "km/s", null),
Array(3.6, "km/h", null),
Array(39.370079, "in/s", null),
Array(141732.283, "in/h", null),
Array(3.28084, "ft/s", null),
Array(11811.0236, "ft/h", null),
Array(0.000621, "mi/s", null),
Array(2.236936, "mi/h", null),
Array(1.943844, "노트(kn)", null),
Array(0.002941, "마하(mach)", null)
);
function unitCalc(type, from, to, value){
var table = unitTable[type];
if (!table) return -1;
var i;
var fromIndex = -1;
var toIndex = -1;
value = parseFloat(value);
/* find "from" */
for (i = 0; i < table.length; i++)
if (table[i][1] == from || table[i][2] == from){
fromIndex = i;
break;
}
/* find "to" */
for (i = 0; i < table.length; i++)
if (table[i][1] == to || table[i][2] == to){
toIndex = i;
break;
}
if (fromIndex == -1 || toIndex == -1)
return -1;
if (type != "5"){
result = parseFloat(table[toIndex][0])/parseFloat(table[fromIndex][0]) * value;
}else{
/* convert to absolute temperature */
switch (fromIndex){
case 2:
value = value + 273.15;
break;
case 3:
value = 5/9 * (value - 32) + 273.15;
break;
case 4:
break;
case 5:
value = 5/9 * (value - 459.7 - 32) + 273.15;
}
/* convert absolute temperature to */
switch (toIndex){
case 2:
value = value - 273.15;
break;
case 3:
value = 9/5 * (value - 273.15) + 32;
break;
case 4:
break;
case 5:
value = 9/5 * (value - 273.15) + 32 + 459.7;
}
result = value;
}
result = Math.round(result * 1000000) / 1000000;
return result;
}
function unitCalcDisplay(from, to, value){
var i;
// From select
var fromSelect = document.getElementById("sFrom");
var toSelect = document.getElementById("sTo");
if (from){
var valueText = document.getElementById("sValue");
if (!valueText || !fromSelect || !toSelect)
return;
valueText.value = value;
// From select box 항목 선택하기
for (i = 0; i < fromSelect.options.length; i++)
if (fromSelect.options[i].value == from)
fromSelect.selectedIndex = i;
// select box 에 알맞는 to select box 출력
selectFromOptions();
// To select box 항목 선택하기
for (i = 0; i < toSelect.options.length; i++)
if (toSelect.options[i].value == to)
toSelect.selectedIndex = i;
}else{
value = document.getElementById("sValue").value;
from = fromSelect.options[fromSelect.selectedIndex].value;
to = toSelect.options[toSelect.selectedIndex].value;
}
if (!value || !from || !to) return;
var type = 0; // 도량
// 현재 단위 각 도량이 어디(etc : length...)에 속해있는지 판별
for (var i=0; i < unitTable.length; i++)
for (var j=0; j < unitTable[i].length; j++)
if (from == unitTable[i][j][1]) {
type = i;
break;
}
if (from.substring(0,1) == "-")
alert("현재단위를 선택해주세요");
else{
if (toSelect.selectedIndex == 0) alert("변환할 단위를 선택해주세요");
else{
var result = unitCalc(type, from, to, value);
document.getElementById("sResult").value = result;
}
}
}
function unitCalculate(value, from, to){
var fromExistFlag = false;
var toExistFlag = false;
var unit;
var table;
var i, j;
for (j = 0; j < 6; j++){
var table = unitTable[j];
fromExistFlag = toExistFlag = false;
for (i = 0; i < table.length; i++){
if (from == table[i][1])
fromExistFlag = true;
if (to == table[i][1])
toExistFlag = true;
}
if(fromExistFlag && toExistFlag){
unitCalcDisplay(from, to, value);
return;
}
}
}
// From select box 에서 항목 선택시 To Select Box 항목출력
function selectFromOptions(){
var fromObject = document.getElementById("sFrom");
var ffrom = fromObject.options[fromObject.selectedIndex].value;
var toObject = document.getElementById("sTo");
var type = 0; // 도량
var cnt = 0;
if(ffrom !=""){
// 각 단위의 도량이 어디에 속해있는지 판별
for (var i=0; i < unitTable.length; i++)
for (var j=0; j < unitTable[i].length; j++)
if (ffrom == unitTable[i][j][1]){
type = i;
break;
}
// 항목에 알맞는 데이터 출력
toObject.length = unitTable[type].length - 1;
for(var i = 0; i < unitTable[type].length; i++){
if (i == 1) continue;
var tempOption = unitTable[type][i][1] + (unitTable[type][i][2] ? " (" + unitTable[type][i][2] + ")" : "");
toObject.options[cnt++] = new Option(tempOption, unitTable[type][i][1]);
}
}else{
toObject.length = 1;
toObject.options[0] = new Option("- 단위를 선택하세요 -", "");
}
}
// from selectbox 에 list출력
function listFrom(){
var fromObject = document.getElementById("sFrom");
var cnt = 1;
for (var i=0; i<unitTable.length; i++) {
for (var j=1; j<unitTable[i].length; j++) {
var tempOption = unitTable[i][j][1] + (unitTable[i][j][2] ? " (" + unitTable[i][j][2] + ")" : "");
fromObject.options[cnt++] = new Option(tempOption, unitTable[i][j][1]);
}
}
}
listFrom();
if( typeof(rege_0_1) != "undefined"
&& typeof(rege_0_2) != "undefined"
&& typeof(rege_0_3) != "undefined" ) {
if (rege_0_1 && rege_0_2 && rege_0_3) {
unitCalculate(rege_0_1, rege_0_2, rege_0_3);
}
}
if ( typeof(rege_0_1) != "undefined"
&& typeof(rege_0_2) != "undefined" ){
if (rege_0_1 && rege_0_2){
if (rege_0_2 == "평")
unitCalculate(rege_0_1, rege_0_2, "평방미터");
else if (rege_0_2 == "돈")
unitCalculate(rege_0_1, rege_0_2, "그램");
}
}
</script>
'개발 > Javascript' 카테고리의 다른 글
[jquery] Form 플러그인 함수 (0) | 2010.04.06 |
---|---|
location.href 와 location.replace() (0) | 2010.03.31 |
Ajax 정복하기 (0) | 2009.10.10 |
크로스 브라우저 투명 코드 처리 (0) | 2009.09.21 |
[javascript] 사이트 즐겨찾기 추가하기 (0) | 2009.09.17 |