JavaScript DataBase ¿¹Á¦ 1 Go to UP

½ÇÇàÇϱâ

Á¦ ÆäÀÌÁöÀÇ page Á¤º¸¸¦ °Ë»öÇϴµ¥ »ç¿ëÇÑ Äڵ带 ¼³¸íÇϰڽÀ´Ï´Ù.

¸ÕÀú encode, unescape¸¦ ÇÇÇϱâ À§Çؼ­ ÇÁ·¹ÀÓ ÆäÀÌÁö¸¦ ¸¸µé°í framesetÀ» ÁöÁ¤ÇÑ ÆäÀÌÁö¿¡ data¸¦ ¸ðµÎ ÀúÀåÇÕ´Ï´Ù. ÀÌ data´Â ÆûÀ¸·Î ÀÔ·ÂÇÑ ÆäÀÌÁö¿¡¼­ °Ë»öÀ» ÇÏ°í °Ë»ö°á°ú¸¦ Ãâ·Â ÆäÀÌÁö¿¡ Ãâ·ÂÇÕ´Ï´Ù. ÆûÀ¸·Î ÀÔ·ÂÇÏ´Â ÆäÀÌÁö³ª °á°ú¸¦ Ãâ·ÂÇÏ´Â ÆäÀÌÁö¸¦ µÎ ÆäÀÌÁö·Î ÇÏÁö¾Ê°í ÇÑ ÆäÀÌÁö·Î ¸¸µé¼öµµ ÀÖÁö¸¸, °Ë»öÀ» ½±°ÔÇϱâ À§Çؼ­ µÎ ÆäÀÌÁö°¡ °Ë»öÀÌ ÆíÇÕ´Ï´Ù.
<html>
<head>
<script language="javascript">

function setDbArray() { 
  var dbArg = setDbArray.arguments

  this.subject = dbArg[0]
  this.explain = dbArg[1]
  this.keyword = dbArg[2]
  this.date = dbArg[3]
}
function setDataBase() { 
  var setDbArg = setDataBase.arguments; 
  DB[totalDbLength] = new setDbArray(setDbArg[0], setDbArg[1], setDbArg[2], setDbArg[3]);
  totalDbLength++; 
}
var totalDbLength=0; //Àüü ÀúÀå Ç׸ñÀÇ °¹¼ö¸¦ ÆÇ´ÜÇÔ. 
var quryString=""; //ÀÔ·Â ÆäÀÌÁö¿¡¼­ ÀÔ·ÂÇÑ ¹®ÀÚ. °á°ú ÆäÀÌÁö¿¡¼­ »ç¿ëÇÔ. 
DB = new Array(); 

setDataBase("<a href='http://a.b.com/first.htm'>ù¹øÀç DB ÆäÀÌÁö</a>", 
	"ù¹øÂ° DBÆäÀÌÁö ÀÔ´Ï´Ù.", 
	"ù¹øÂ°, DB", 
	"1998³â 09¿ù04ÀÏ"
);
setDataBase("<a href='http://a.b.com/second.htm'>µÎ¹øÂ° DB ÆäÀÌÁö</a>", 
	"µÎ¹øÂ° DBÆäÀÌÁö ÀÔ´Ï´Ù.", 
	"µÎ¹øÂ°, DB", 
	"1998³â 09¿ù04ÀÏ"
);

</script>
</head>
<frameset rows="90%,*" border=0>
	<frame src="resultWin.htm" name="resultWin">
	<frame src="inputWin.htm" name="inputWin">
</frameset>
</html>
¿©±â¼­ °¢ ÆäÀÌÁöÀÇ Á¤º¸´Â "Á¦¸ñ", "ÆäÀÌÁö¼³¸í", "°Ë»ö¾î", "¸¸µç ³¯Â¥" ·Î 4°¡ÁöÀÇ ÇÏÀ§ Á¤º¸¸¦ °¡Áö´Â ¹è¿­·Î ¸¸µé¾ú½À´Ï´Ù. ±×·¯¹Ç·Î °¢ Á¤º¸¸¦ setDataBase()¿¡ ³Ö¾îÁÙ ¶§, 4°¡Áö¸¦ ´Ù ³Ö¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. »¡°£»öÀÇ Äڵ尡 °¢ ¹è¿­¿¡¼­ 4°¡ÁöÀÇ Á¤º¸¸¦ ÀúÀåÇÕ´Ï´Ù.

À§ÀÇ ÆÄ¶õ»öÀÇ ÄÚµå·Î °¢ Á¤º¸¸¦ ÀúÀåÇÕ´Ï´Ù. ÆÄ¶õ»ö Äڵ带 °¡Áö°í ÀÖ´Â setDataBase ÇÔ¼ö´Â ±»ÀÌ ÀÌ·¸°Ô »ç¿ëÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ´Ü¼øÈ÷ ¾Æ·¡·Î »ç¿ëÇØµµ µË´Ï´Ù.
DB[0] = new setDbArray(setDbArg[0], setDbArg[1], setDbArg[2], setDbArg[3]);
À§ÀÇ ÆÄ¶õ»öÀ¸·Î »ç¿ëÇÑ ÀÌÀ¯´Â °ü¸®ÇÏ±â ÆíÇÏ°Ô ÇϱâÀ§ÇÔ ÀÔ´Ï´Ù. ³ªÁß¿¡ ÆäÀÌÁö¸¦ ¸Ç À§ÀÇ ¹è¿­À̳ª Áß°£¹è¿­¿¡ Ãß°¡ÇÒ ¶§ DB[¼ýÀÚ] ¿¡¼­ ¼ýÀÚ¸¦ ´Ù °íÃÄ¾ß Çϴµ¥ ÀÌ·¸°Ô ÇÏ¸é ¾Æ¹«µ¥³ª ³¢¿ö ³Ö¾îÁÖ¸é °£´ÜÈ÷ µË´Ï´Ù. °Ë»ö°á°ú°¡ ÃÖ±Ù °»½ÅµÈ ÆäÀÌÁö ¼ø¼­·Î ÇÒ¶§µµ ÆíÇÕ´Ï´Ù.

°ü¸®¶ó´Â ¹®Á¦¸¦ °¡º±°Ô »ý°¢ÇÏÁö ¸¶¼¼¿ä.. ³ªÁß¿¡ Data ¾çÀÌ ´Ã°Å³ª ±â°£ÀÌ ¸¹ÀÌ Áö³ª¸é ¹«Ã´ Çì±ò¸± ¼ö ÀÖ½À´Ï´Ù. ÆäÀÌÁö¸¦ Ãß°¡ÇßÀ» ¶§´Â ´õ ¾î·Æ½À´Ï´Ù.

°¢ ÆäÀÌÁöÀÇ Á¤º¸¿¡¼­ ÆäÀÌÁöÀÇ URL¿¡ Àý´ë °æ·Î¸¦ ÁöÁ¤Çß½À´Ï´Ù. À̰÷µµ °ü¸®¸¦ ¿°µÎ¿¡ µÎ¾ú½À´Ï´Ù. »ó´ë °æ·Î¸¦ ÁöÁ¤ÇÏ¸é ³ªÁß¿¡ Data Á¤º¸¸¦ ÀúÀåÇÑ ÆäÀÌÁö¸¦ ¿Å±æ·Á¸é ÀÏÀÏÀÌ ¸ðµç data ¿¡ °æ·Î¸¦ ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¾Æ¸¶ ´Ù½Ã ¸¸µå´Â°Ô ³ªÀ»°Ì´Ï´Ù. °¢ ÆäÀÌÁöÀÇ URLÀ» Àý´ë°æ·Î·Î ÁöÁ¤Çϸé À§ÀÇ ¼Ò½º¸¦ °¡Áø ÆäÀÌÁö¸¦ ¾Æ¹«µ¥³ª ¿Å±æ¼ö ÀÖ½À´Ï´Ù. ¾ÆÁÖ ÆíÇÏÁÒ..


»ç¿ëÀÚ°¡ °Ë»ö¾î¸¦ ÀÔ·ÂÇÏ´Â inputWin.htm ÆäÀÌÁöÀÔ´Ï´Ù.

<html><head><title>ÆäÀÌÁö °Ë»ö ÀԷ±â</title></head>
<script language="JavaScript">
<!--
function korOrEng(qury) { 
  var korOrEng="kor"
  var alpabet = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 
	'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 
	'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); 
	// À§ÀÇ ÁÙÀº ÇÑ ÁÙÀÔ´Ï´Ù. 

  for(var i=0; i < alpabet.length; i++) { 
    if( qury.indexOf(alpabet[i]) != -1 ) { 
      korOrEng = "eng" 
      break;
    }
  }
  if ( (navigator.appName.indexOf("Netscape") != -1) &&  korOrEng == "kor") 
    korOrEng = 3; 
  else korOrEng = 2

  return korOrEng
}
function goSearch(qury) { 

  if( (qury.length < korOrEng(qury)) 
	|| (qury.indexOf(",") != -1) 
	|| (qury.indexOf(".") != -1) 
	|| (qury.indexOf(" ") != -1) 
  ) { 
	document.qury.text.value="°Ë»ö¾î°¡ ºÎÀûÇÕ ÇÕ´Ï´Ù."
	document.qury.text.focus();
	document.qury.text.select();
	return 
  }

  parent.quryString = qury
  parent.resultWin.location.href = "resultWin.htm?dummy"; 
}
//-->
</script>
<body>
<form name="qury" onSubmit="goSearch(this.text.value); return false">
  <input type=text name="text""> 
  <input type=button onClick="goSearch(this.form.text.value)" value="°Ë»ö">
  <input type=button onClick="parent.resultWin.location.href='resultWin.htm'" value="°Ë»ö°á°ú ÆäÀÌÁö">
</form>
</body>
</html>
Æû¿¡ °Ë»ö¾î¸¦ ÀÔ·ÂÇϰí "°Ë»ö" ´ÜÃ߸¦ ´©¸£°Å³ª ¹Ù·Î ¿£ÅÍÇϸé goSearch(°Ë»ö¾î)·Î °©´Ï´Ù. °Ë»ö¾î·Î ÇѱÛÀ̳ª ¿µ¹®ÀÌ 1°³ÀÇ ±ÛÀÚÀÌ¸é °Ë»öÀ» ÇÏÁö¾Ê°í ½°Ç¥(,), ¸¶Ä§Ç¥(.), °ø¹é(" ") ÀÏ °æ¿ì¿¡µµ °Ë»öÀ» ÇÏÁö¾Ê½À´Ï´Ù. °¢ Á¤º¸ÀÇ ÇÏÀ§ Á¤º¸ÀÎ subject, explain, keyword, date¿¡´Â ½°Ç¥(,), ¸¶Ä§Ç¥(.), °ø¹é(" ") ¹®ÀÚ°¡ ´Ù µé¾îÀÖ½À´Ï´Ù. ±×·¡¼­ °Ë»ö°á°ú°¡ ³Ê¹« ¸¹ÀÌ ³ª¿Ã¼ö ÀÖ½À´Ï´Ù.

¸¹Àº data¸¦ °¡Áö°í ÀÖ´Â ÆäÀÌÁö¿¡¼­ ÀÌµé ¾ÆÁÖ ÈçÇÑ ±ÛÀÚ´Â °á°ú Ãâ·Â ½Ã°£ÀÌ ¸¹ÀÌ °É¸³´Ï´Ù. ÀÌ Ã³¸®¸¦ »ç¿ëÀÚ°¡ Áß´ÜÇÒ ¼öµµ ¾ø½À´Ï´Ù. JavaScriptÀÇ Ã³¸®´Â »ç¿ëÀÚ°¡ Áß´ÜÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ·± ¸¹Àº °á°ú°¡ ³ª¿À´Â ¹®ÀÚµéÀº °Ë»ö¾î·Î ÀÔ·ÂÇÏ´Â °ÍÀ» ¸·¾Æ¾ß ÇÕ´Ï´Ù.

ÇѱÛ, ¿µ¹® 1±ÛÀÚµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

ieÀÇ °æ¿ì Çѱ۵µ ¿µ¾î¿Í °°ÀÌ ¹®ÀÚÀÇ ±æÀ̰¡ 1·Î ³ª¿É´Ï´Ù. ¹Ý¸é¿¡ nnÀº ÇѱÛÀº 2ÀÔ´Ï´Ù.

alert("¾È³ç".length)
´Â ie·Î ÀÐÀ¸¸é 2À̰í nnÀ¸·Î ÀÐÀ¸¸é 4ÀÔ´Ï´Ù. ±×·¡¼­, °Ë»ö¾î·Î ÀÔ·ÂÇÑ ±ÛÀÚ°¡ ÇѱÛÀÎÁö ¿µ¾îÀÎÁö ieÀÎÁö nnÀÎÁö korOrEng(qury)·Î ±¸ºÐÀ» ÇÏ¿© ÁöÁ¤ÇØ ÁÝ´Ï´Ù. nn¿¡¼­ ¿µ¾î°¡ ¾ø´Â °Ë»ö¹®ÀÚ´Â ¸ðµÎ Çѱ۷Πº¸°í Á¦ÇÑ ±æÀ̸¦ 3À¸·Î ÁöÁ¤ÇÕ´Ï´Ù. ie´Â ±æÀ̰¡ °°±â ¶§¹®¿¡ È®ÀÎÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. nn¿¡¼­ ¿µ¾î°¡ ¾ø´Â °Ë»ö¾î´Â ¸ðµÎ Çѱ۷Πº¸°í Á¦ÇѱæÀ̸¦ 3 ÀÌÇÏ·Î ÁöÁ¤ÇÕ´Ï´Ù. ÇÑ±Û 2±ÛÀÚ ÀÌ»óÀÎ 4 ÀÌ»óÀÇ ±æÀ̸¦ °¡Áö´Â °Ë»ö¾î¸¸ °Ë»öµË´Ï´Ù. Çѱ۰ú ¿µ¾î¸¦ µ¿½Ã¿¡ ÀÔ·ÂÇØµµ °°½À´Ï´Ù.

°Ë»ö¾î°¡ 1±ÛÀÚ³ª ½°Ç¥(,), ¸¶Ä§Ç¥(.), °ø¹é(" ") ÀÏ °æ¿ì¿¡ °Ë»öÀ» ÇÏÁö¾Ê°í »ç¿ëÀÚ¿¡°Ô À߸øµÈ °Ë»ö¾î¶ó°í ¾Ë¸³´Ï´Ù. ÇѱÛÀ̳ª ¿µ¾î³ª 2±ÛÀÚ ´Ü¾î°¡ ¸¹½À´Ï´Ù. ±×·¡¼­ 2±ÛÀÚ ÀÌ»ó »ç¿ëÇÏ°Ô Çß½À´Ï´Ù. 1±ÛÀÚ ´Ü¾î´Â µå¹«´Ï±î¿ä.. ÇÑ±Û "â", "¹®" °°Àº°Ô ÀÖÁö¸¸ ¾ÈÀüÇÑ °Ë»öÀ» À§Çؼ­ ¾î¿¼ö°¡ ¾ø½À´Ï´Ù.

ÀÌÁ¦ °Ë»ö¾î·Î »ç¿ëÇÒ ¹®ÀÚ¿­À» parent.quryString ¿¡ ÀúÀåÇÕ´Ï´Ù. ±×¸®°í ÀÌ °Ë»ö¾î·Î °Ë»öÇÒ resultWin.htmÀ» Ãâ·ÂÇÕ´Ï´Ù. °Ë»ö°á°ú¸¦ Ãâ·ÂÇÒ ÆäÀÌÁö¿¡¼­ À̰ÍÀ¸·Î frameset¿¡ ÀúÀåÇÑ Á¤º¸¸¦ ÀнÀ´Ï´Ù.

resultWin.htm ÆäÀÌÁöÀÔ´Ï´Ù.

<html><head><title>ÆäÀÌÁö °Ë»ö °á°ú ÆäÀÌÁö</title>

<script language="JavaScript">
<!--
function pipeChar(total, output, input) {

  var totalLen = total.length;  
  var inputLen = input.length;
  var outputLen = output.length;  
  var i = 0, flag, end = "";

  while( i < totalLen ) {    
    flag  =  total.indexOf(output, i);
    if(flag != -1) {      
      end += total.substring(i, flag);      
      end += input;
      i = outputLen+flag;    
    }    
    else break;  
  }	
  end += total.substring(i, totalLen);  
  return end
}
function dbProp(page, qury) {

  if( (page.explain.indexOf(qury) != -1) || (page.keyword.indexOf(qury) != -1) ) 
    return true; 

  return false;
}

function search(qury) { 
  if( !qury ) { 
    document.write( "<table border=0 width='70%' cellpadding=5><tr><td>");
    document.write( "DHTML¿¡ °ü°èµÈ ÆäÀÌÁö¸¦ °Ë»öÇÕ´Ï´Ù. ..."); 
    document.write( "</td></tr></table>"); 
    return
  }

  var findCount=0;         // (1)
  var db = parent.DB     // (2)

  for(var i=0; i < db.length; i++) {
    if( dbProp(db[i], qury) ) { 
      document.write( "<table border=0 width='70%'>");
      document.write( "<tr><td colspan=2>" + db[i].subject + "</td></tr>" );
      document.write( "<tr><td width='20%'>ÆäÀÌÁö¾È³»</td>");
      document.write( "<td>" + pipeChar(db[i].explain, qury, ("<font color='red'>" + qury + "</font>")) + "<td></tr>");
      document.write( "<tr><td width='20%'>°Ë»ö¾î</td>"); 
      document.write( "<td>" + pipeChar(db[i].keyword, qury, ("<font color='red'>" + qury + "</font>")) + "</td></tr>");
      document.write( "<tr><td width='20%'>ÀÛ¼ºÀÏ</td><td>" + db[i].date +"</td></tr>");
      document.write( "</table><br>"); 
      findCount++
    }
  }
  if( findCount ) { 
    document.write( "¹ß°ßÇÑ ¹®¼­ °¹¼ö´Â "+ findCount + "°³ ÀÔ´Ï´Ù.")
  }
  else { 
    document.write("<table width='50%'><tr><td>ãÀº ¹®¼­°¡ ¾ø½À´Ï´Ù. ´Ù¸¥ °Ë»ö¾î¸¦ »ç¿ëÇØ º¸¼¼¿ä</td></tr></table>"); 
  }
}
//-->
</script>
</head>
<body>

<center>
<table border=5><tr><td bgcolor="#cecebd">°Ë»ö °á°ú ÆäÀÌÁö</td></tr></table>
</center>

<center><script>search(parent.quryString)</script></center>
</body>
</html>
<script>search(parent.quryString)</script>·Î °Ë»ö¾î¸¦ ÀÔ·ÂÇÏ´Â ÆäÀÌÁö¿¡¼­ ÀúÀåÇØ ³õÀº °Ë»ö¾î¸¦ °Ë»öÇÔ¼ö search()¿¡ º¸³»¾î °Ë»öÀ» ½ÃÀÛÇÕ´Ï´Ù.

°¥»öÀÇ ÄÚµå´Â °Ë»ö¾î¸¦ ÀÔ·ÂÇϱâ Àü¿¡ ÆäÀÌÁö°¡ ¸ÇóÀ½ Ãâ·ÂµÉ ¶§ »ç¿ëÇÕ´Ï´Ù.

var findCount=0; À§ÀÇ ÁÖ¼® (1)¹ø ÁÙÀº °Ë»öµÈ ÆäÀÌÁöÀÇ °¹¼ö¸¦ ¸»ÇØÁÖ±â À§Çؼ­ ÁöÁ¤ÇÕ´Ï´Ù.
°Ë»öµÈ ÆäÀÌÁö°¡ ¾øÀ»¶§µµ »ç¿ëÇÕ´Ï´Ù.

var db = parent.DB; ÁÖ¼® (2)¹ø ÁÙ·Î °Ë»öÀ» ½ÃÀÛÇÒ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù.

dbProp(db[i], qury) ·Î Á¤º¸¸¦ °¡Áö°í ÀÖ´Â ¹è¿­¿¡¼­ °Ë»ö¾î¸¦ °Ë»öÇÕ´Ï´Ù. ¿©±â¼­´Â °¢ ÇϺΠÁ¤º¸¿¡¼­ ÆäÀÌÁö ¼³¸íÀÎ "explain"°ú ÁöÁ¤ °Ë»ö¾îÀÎ "keyword"¿¡¼­¸¸ °Ë»öÇÕ´Ï´Ù. µÑ Áß¿¡¼­ Çϳª¸¸ ÁöÁ¤ÇÏ¸é ±×°÷¿¡ ÀÖ´Â ¹®ÀÚ¿­¸¸ °Ë»öÀ» ÇÕ´Ï´Ù.

pipeChar(db[i].explain, qury, ("<font color='red'>" + qury + "</font>"))
pipeChar(db[i].keyword, qury, ("<font color='red'>" + qury + "</font>"))

µÎ ÁÙ·Î db[i].explain, db[i].keyword¿¡¼­ °Ë»ö¾î¿Í °°Àº ±ÛÀÚ¸¦ »¡°£»öÀ¸·Î ¹Ù²Ù¾î¼­ »ç¿ëÇÑ °Ë»ö¾î¸¦ ´«¿¡ Àß ¶çÀÌ°Ô ÇÕ´Ï´Ù. ±×·¯¸é °¢ ÆäÀÌÁö°¡ ¾î¶² °Ë»ö¾î¿Í ¸Â¾Ò´ÂÁö º¸±â¿¡ ÆíÇÕ´Ï´Ù. ¿¹¸¦µé¸é °Ë»ö¾î°¡ ƯÁ¤ ´Ü¾îÀÇ ÀϺÎÀÏ ¶§, °ü·Ã °Ë»ö¾î¸¦ ½±°Ô È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. window ·Î °Ë»ö¾î·Î "win"À» ÀÔ·ÂÇÏ¸é ½±°Ô windowÀÇ ÀϺΠ¹®ÀÚ¶ó´Â °ÍÀ» ¾Ë¼ö°¡ ÀÖ½À´Ï´Ù.

--
óÀ½À¸·Î µÇ´Âµ¥·Î ¸¸µé¾îº» DBÀÔ´Ï´Ù. À߸øµÇ°Å³ª ¿¡·¯°°Àº °ÍÀÌ ÀϾ¸é ¸ÞÀÏÀ» ºÎʵ右´Ï´Ù. ¹°·Ð Á¶¾ðµµ ¾ÖŸ°Ô ±â´Ù¸®°í ÀÖ½À´Ï´Ù.

½ÇÇàÇϱâ


TOP