พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
Javascript development / โค้ดปฏิทิน
bit69
bit69
Sat 24 Dec 2005 11:42:42

ช่วยดู code นี้ให้หน่อยนะครับไม่รู้ว่าพอจะเข้าใจหรือป่าวนะครับ คือผมตัดมาจาก code ปฏิทินที่ทำเป็น popup นะครับเมื่อเวลาคลิกแล้วจะมีปฏิทินแสดงออกมานะครับคือส่วนข้างบนของปฏิทินมันจะมีให้เราเลือกเดือน กับ เลือกปีนะครับ คือตอนนี้ผมเปลี่ยนจากเดือนเป็นกาษาไทยแล้วนะครับ และส่วนของปียังเป็น ค.ศ. อยู่นะครับ ไม่ทราบว่าจะต้องแก้ตรงไหนครับ

//--------------------------------------------------

 /*** Year Pulldown ***/

 function incYear() {
  for (i=0; i<7; i++){
   newYear = (i+nStartingYear)+1
   if (newYear==yearSelected)
   { txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;" }
   else
   { txtYear = "&nbsp;" + newYear + "&nbsp;" }
   document.getElementById("y"+i).innerHTML = txtYear
  }
  nStartingYear ++;
  bShow=true
 }

 function decYear() {
  for (i=0; i<7; i++){
   newYear = (i+nStartingYear)-1
   if (newYear==yearSelected)
   { txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;" }
   else
   { txtYear = "&nbsp;" + newYear + "&nbsp;" }
   document.getElementById("y"+i).innerHTML = txtYear
  }
  nStartingYear --;
  bShow=true
 }

 function selectYear(nYear) {
  yearSelected=parseInt(nYear+nStartingYear);
  yearConstructed=false;
  constructCalendar();
  popDownYear();
 }

 function constructYear() {
  popDownMonth()
  sHTML = ""
  if (!yearConstructed) {

   sHTML = "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"

   j = 0
   nStartingYear = yearSelected-3
   for (i=(yearSelected-3); i<=(yearSelected+3); i++) {
    sName = i;
    if (i==yearSelected){
     sName = "<B>" + sName + "</B>"
    }

    sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
    j ++;
   }

   sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>"

   document.getElementById("selectYear").innerHTML = "<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>" + sHTML + "</table>"

   yearConstructed = true
  }
 }

 function popDownYear() {
        clearInterval(intervalID1)
  clearTimeout(timeoutID1)
  clearInterval(intervalID2)
  clearTimeout(timeoutID2)
  crossYearObj.visibility= "hidden"
 }

 function popUpYear() {
  var leftOffset

  constructYear()
  crossYearObj.visibility = (dom||ie)? "visible" : "show"
  leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft
  if (ie)
  {
   leftOffset += 6
  }
  crossYearObj.left = leftOffset
  crossYearObj.top = parseInt(crossobj.top) + 26
 }

//------------------------

Administrator
Sat 24 Dec 2005 12:02:14
ไม่แน่ใจนะครับ รู้สึกว่าโค๊ดบางส่วนจะไม่มี แต่เท่าที่อ่านดูแล้ว

//--------------------------------------------------

 /*** Year Pulldown ***/

 function incYear() {
  for (i=0; i<7; i++){
   newYear = (i+nStartingYear)+1
   if (newYear==yearSelected)
   { txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;" }
   else
   { txtYear = "&nbsp;" + newYear + "&nbsp;" }
   document.getElementById("y"+i).innerHTML = txtYear
  }
  nStartingYear ++;
  bShow=true
 }

 function decYear() {
  for (i=0; i<7; i++){
   newYear = (i+nStartingYear)-1
   if (newYear==yearSelected)
   { txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;" }
   else
   { txtYear = "&nbsp;" + newYear + "&nbsp;" }
   document.getElementById("y"+i).innerHTML = txtYear
  }
  nStartingYear --;
  bShow=true
 }

 function selectYear(nYear) {
  yearSelected=parseInt(nYear+nStartingYear);
  yearConstructed=false;
  constructCalendar();
  popDownYear();
 }

 function constructYear() {
  popDownMonth()
  sHTML = ""
  if (!yearConstructed) {

   sHTML = "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"

   j = 0
   nStartingYear = yearSelected-3
   for (i=(yearSelected-3); i<=(yearSelected+3); i++) {
    sName = (i+543); //น่าจะตรงนี้ล่ะครับ
    if (i==yearSelected){
     sName = "<B>" + sName + "</B>"
    }

    sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
    j ++;
   }

   sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>"

   document.getElementById("selectYear").innerHTML = "<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>" + sHTML + "</table>"

   yearConstructed = true
  }
 }

 function popDownYear() {
        clearInterval(intervalID1)
  clearTimeout(timeoutID1)
  clearInterval(intervalID2)
  clearTimeout(timeoutID2)
  crossYearObj.visibility= "hidden"
 }

 function popUpYear() {
  var leftOffset

  constructYear()
  crossYearObj.visibility = (dom||ie)? "visible" : "show"
  leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft
  if (ie)
  {
   leftOffset += 6
  }
  crossYearObj.left = leftOffset
  crossYearObj.top = parseInt(crossobj.top) + 26
 }

//------------------------

bit69
bit69
Tue 27 Dec 2005 15:11:31

อีกรอบนะครับคือวันที่ 25  ของเดือนธันวาคมมันเลือกไม่ได้ครับ ช่วยแก้ให้หน่อยนะครับ อาจจะยาวหน่อยนะครับ

---------------------------

<html>
<head>
 <title>PopCalendar</title>
<script language="JavaScript">
var IE4=false;
var gd=new Date();
var gToday=[gd.getFullYear(),gd.getMonth()+1,gd.getDate()];
var agenda=[];
var gTheme=self.name.split(":");
var gCurMonth=eval(gTheme[0]);

if (!gTheme[3]) gTheme[3]="gfPop";
eval("parent."+gTheme[3]+"=parent.frames[self.name];");

function fGetById(doc, id) {
  if (IE4) return doc.all(id);
  else return doc.getElementById(id);
}

function addEvent(date, message, color, action, imgsrc) {
  agenda[date] = new Array(message, color, action, imgsrc);
}

function popup(url, framename) {
  var w=parent.open(url,framename,gsPopConfig);
  if (w&&!framename) w.focus();
}

var gfSelf=fGetById(parent.document,self.name);
with (document) {
 write("<lin"+"k rel='stylesheet' type='text/css' href='"+gTheme[1]+".css'>");
 write("<scr"+"ipt language='JavaScript' src='"+gTheme[1]+".js'></scr"+"ipt>");
    write("<scr"+"ipt language='JavaScript' src='"+gTheme[2]+"'></scr"+"ipt>");
}
</script>
</head>
<body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onmouseup="self.status='PopCalendar';return true;">
<script language="JavaScript">
var gdBegin,gdEnd,gRange;
var gdSelect=[0,0,0];
var gcbMon,gcbYear;
var gdCtrl;
var gcTemp=gcBG;
var gCellSet=[];
var giSat=(gbEuroCal)?5:6;
var giSun=(gbEuroCal)?6:0;
if (gbEuroCal)
 gWeekDay=[].concat(gWeekDay.slice(1), gWeekDay[0]);
var cal=[];
for (var i=0;i<6;i++)
   cal[i]=[];

function fPopCalendar(dateCtrl,range){
  var pc=dateCtrl;
  if (gdCtrl!=pc)
 gdCtrl=pc;
  else if (gfSelf.style.visibility=="visible") {
 fHideCal();
 return;
  }
  var s=fParseDate(gdCtrl.value);
  if (s==null) {
 s=eval(gTheme[0]);
 gdSelect=[0,0,0];
  } else {
 gdCtrl.value=fFormatDate(s[0],s[1],s[2]);
 gdSelect=s;
  }
  fInitRange(range);
  if (!fSetCal(s[0], s[1])) {
   fHideCal();
 return;
  }
  var p=fGetXY(pc);
  var ob=gfSelf.frameBorder?gfSelf.frameBorder==0?0:8:8;
  var ws=fGetWinSize(parent);
  var oh=pc.offsetHeight;
  var tmp=ws[0]+ws[2]-fGetById(document,"popTable").offsetWidth-ob;
  p[0]=p[0]<ws[2]?ws[2]+2:p[0]>tmp?tmp:p[0];
  var h=fGetById(document,"popTable").offsetHeight+oh+ob;
  tmp=ws[1]+ws[3]-h;
  if (p[1]>tmp&&p[1]-ws[3]+oh>=h&&oh>0) p[1]-=h+2;
  with (gfSelf.style) {
   left=p[0]-1;
 top =p[1]+oh+1;
 visibility="visible";
  }
}

function fGetWinSize(w) {
  if (w.innerWidth) return [w.innerWidth-16,w.innerHeight,w.pageXOffset,w.pageYOffset];
  else with (w.document.body) return [clientWidth,clientHeight,scrollLeft,scrollTop];
}

function fHideCal() {
  with (gfSelf.style) {
 visibility="hidden";
 top=parseInt(top)-10; // for nn6 bug
  }
}

function fGetXY(aTag){
  var p=[0,0];
  while(aTag!=null){
   p[0]+=aTag.offsetLeft;
   p[1]+=aTag.offsetTop;
   aTag=aTag.offsetParent;
  }
  return p;
}

function fInitRange(r) {
  gRange=r?r:[];
  var rb=gRange[0]?r[0]:gBegin;
  gdBegin=new Date(rb[0],rb[1]-1,rb[2]);
  var re=gRange[1]?r[1]:gEnd;
  gdEnd=new Date(re[0],re[1]-1,re[2]);
}

function fSetDate(y,m,d){
  var action=fGetAgenda([y,m,d])[2];
  if (!action)
 return;
  gCurMonth=[y,m];
  gdSelect=[y,m,d];
  gdCtrl.value=fFormatDate(y,m,d);
  fHideCal();
  eval(action);
}

function fParseDate(ds) {
  var r=null;
  var i;
  if (ds!=null) {
 var pd=ds.split(gsSplit);
 if (pd.length==3) {
  var m=pd[giDatePos==1?0:1];
  for (i=0; (i<12)&&(gMonths[i].substring(0,3).toLowerCase()!=m.substring(0,3).toLowerCase())&&(i+1!=m); i++);
  if (i<12) {
   var y=parseInt(pd[giDatePos==2?0:2].substring(0,4),10);
   var pf=Math.floor(gEnd[0]/100)*100;
   r=[y<100?y>gEnd[0]%100?pf-100+y:pf+y:y,i+1,parseInt(pd[giDatePos],10)];
  } else
   return null;
   } else
  return null;
 var td=new Date(r[0],r[1]-1,r[2]);
 if (isNaN(td)||td.getMonth()!=r[1]-1)
  return null;
  }
  return r;
}

function fGetAgenda(d) {
  var s=fCalibrate(d[0],d[1]);
  if (!fValidRange(s[0],s[1],d[2]))
 return [gsOutOfRange, gcBG];
  for (var i=2; i<gRange.length; i++)
 if (gRange[i][2]==d[2]&&gRange[i][1]==s[1]&&gRange[i][0]==s[0])
  return [gsOutOfRange, gcBG];
  var ag=fHoliday(s[0],s[1],d[2]);
  if (ag==null)
 ag=["",gcBG,gsAction];
  return ag;
}

function fFormatDate(y,m,d){
  var M=gbDigital?m<10?"0"+m:m:gMonths[m-1];
  var D=gbDigital&&d<10?"0"+d:d;
  var sy=y%100;
  sy=sy<10?"0"+sy:sy;
  switch (giDatePos) {
 case 0: return D+gsSplit+M+gsSplit+(gbShortYear?sy:y);
 case 1: return M+gsSplit+D+gsSplit+(gbShortYear?sy:y);
 case 2: return (gbShortYear?sy:y)+gsSplit+M+gsSplit+D;
  }
}

//--------

function fValidRange(y,m,d) {
  var date=new Date(y,m-1,d);
  return (date>=gdBegin)&&(date<=gdEnd);
}

function fCalibrate(y,m) {
  if (m<1) { y--; m=12; }
  else if (m>12) { y++; m=1; }
  return [y,m];
}

function fBuildCal(y,m) {
  m=parseInt(m,10);
  var days=[31,31,(y%4==0&&y%100!=0||y%400==0)?29:28,31,30,31,30,31,31,30,31,30,31];
  var dCalDate=new Date(y,m-1,1);
  var iDayOfFirst=dCalDate.getDay();
  if (gbEuroCal)
 if (--iDayOfFirst<0)
  iDayOfFirst=6;
  var iOffsetLast=days[m-1]-iDayOfFirst+1;
  var iDate=1;
  var iNext=1;
  for (var d=0;d<7;d++)
 cal[0][d]=(d<iDayOfFirst)?[m-1,-(iOffsetLast+d)]:[m,iDate++];
  for (var w=1;w<6;w++)
   for (var d=0;d<7;d++)
  cal[w][d]=(iDate<=days[m])?[m,iDate++]:[m+1,-(iNext++)];
  return cal;
}

function fCheckRange(y,m) {
  if (y>gEnd[0]||y<gBegin[0]||(y==gBegin[0]&&m<gBegin[1])||(y==gEnd[0]&&m>gEnd[1])) {
 alert(gsOutOfRange);
 if (gcbMon) gcbMon.options[gCurMonth[1]-1].selected=true;
 if (gcbYear) gcbYear.options[gCurMonth[0]-gBegin[0]].selected=true;
 return false;
  }
  return true;
}

function fSetCal(y,m){
  if (!fCheckRange(y,m))
 return false;
  if (gcbMon) gcbMon.options[m-1].selected=true;
  if (gcbYear) gcbYear.options[y-gBegin[0]].selected=true;
  gCurMonth=[y,m];
  if (giDCStyle>0) fGetById(document,"calTitle").innerHTML=eval(gsCalTitle);
  fUpdateCal(y,m);
  gfSelf.width=fGetById(document,"popTable").offsetWidth;
  gfSelf.height=fGetById(document,"popTable").offsetHeight;
  return true;
}

function fSetSelected(aCell) {
  var s=fGetSelected(aCell);
  fSetDate(s[0],s[1],s[2]);
}

function fGetSelected(aCell){
  var y=gCurMonth[0];
  var m=gCurMonth[1];
  aCell.bgColor=gcBG;
  var chd=(IE4)?aCell.children[0]:aCell.firstChild;
  with (chd) {
   var d=parseInt(innerHTML,10);
   if (style.color==gcOtherDay)
  m+=(id<10)?-1:1;
 if (m<1) {y--; m=12;}
 else if (m>12) { y++; m=1;}
 return [y,m,d];
  }
}

function fDrawCal() {
  var sTD=" width='"+giCellWidth+"' style='height:"+giCellHeight+";' ";
  var sDIV=" style='position:relative;height:"+(giCellHeight-4)+";width:"+giCellWidth+";' ";
  var id=0;
  with (document) {
 write("<tr>");
 for (var i=0; i<7; i++)
  write("<td class='CalHead' "+sTD+">"+gWeekDay[i]+"</td>");
 write("</tr>");
   for (var w=1; w<7; w++) {
  write("<tr>");
  for (var d=0; d<7; d++) {
   write("<td "+sTD+"><div class='CalCell' "+sDIV+" onMouseOver='gcTemp=this.style.backgroundColor;this.style.backgroundColor=gcToggle;self.status=this.title;return true;' onMouseOut='this.style.backgroundColor=gcTemp?gcTemp:\"transparent\";' onclick='fSetSelected(this)'>");           //Coded by Liming Weng(Victor Won)  email:victorwon@netease.com
   write("<A id='"+(id++)+"' href='javascript:' class='CellAnchor' onfocus='this.blur();' onclick='return false;' >00</A></div></td>")
  }
  write("</tr>");
 }
  }
}

function fUpdateCal(y,m) {
  var c=fBuildCal(y,m);
  var ag,d;
  var offset=(giDCStyle==1)?2:0;
  for (var week=0; week<6; week++)
 for (var day=0; day<7; day++) {
  m=c[week][day][0];
  d=c[week][day][1];
  with (gCellSet[(7*week)+day+offset]) {
   if (d<0) {
    style.color=gcOtherDay;
    d=-d;
   }else{
    style.color=(day==giSun)?gcSunSadday==giSat)?gcSat:gcWorkday;
   }
   innerHTML=d;
   ag=fGetAgenda([y,m,d]);
   parentNode.title=ag[0];
   style.textDecoration=(ag[2])?"none":"line-through";
   if (ag[3]) innerHTML+="<BR><IMG SRC='"+ag[3]+"' BORDER=0></IMG>";
   with (parentNode) {
    style.backgroundColor=(m==gCurMonth[1])?(gdSelect+''==[y,m,d])?gcToggleSadgToday+''==[y,m,d])?gcTodayBG:ag[1]:ag[1];
    style.backgroundColor=style.backgroundColor;
    parentNode.bgColor=ag[1];
    parentNode.bgColor=ag[1];
   }
  }
 }
}

function fPrevMonth(){
  var m=gCurMonth[1];
  var y=gCurMonth[0];
  if (--m<1) { m=12; y--; }
  fSetCal(y,m);
}

function fNextMonth(){
  var m=gCurMonth[1];
  var y=gCurMonth[0];
  if (++m>12) { m=1; y++; }
  fSetCal(y,m);
}

//--------

fInitRange();
with (document) {
  body.bgColor=gcCalBG;
  write("<TABLE id='popTable' "+gsPopTable+" >");
  var sTitle="<SPAN id='calTitle' class='CalTitle'>"+eval(gsCalTitle)+"</SPAN>";
  if (giDCStyle==2)
 write("<TR align='center'><TD colspan='3'>"+sTitle+"</TD></TR>");
  else if (giDCStyle==1){
   write("<TR align='center'><TD><A href='javascript:fPrevMonth()' class='MonthNav'>"+gsNavPrev+"</A></TD><TD align='center'>");
 write(sTitle);
 write("</TD><TD><A href='javascript:fNextMonth()' class='MonthNav'>"+gsNavNext+"</A></TD></TR>");
  } else {
 write("<TR align='center'><TD colspan='3'><input type='button' value='"+gsNavPrev+"' class='MonthNav' onClick='fPrevMonth()'> ");
 var mstr="<select id='MonSelect' class='CalTitle' onchange='fSetCal(gcbYear.value, gcbMon.value)'>";
 for (var i=0; i<12; i++)
  mstr+="<option value='"+(i+1)+"'>"+gMonths[i]+"</option>";
 mstr+="</SELECT>";  
 var ystr="<SELECT id='YearSelect' class='CalTitle' onchange='fSetCal(gcbYear.value, gcbMon.value)'>";
 for(var i=gBegin[0];i<=gEnd[0];i++)
  ystr+="<OPTION value='"+i+"'>"+i+"</OPTION>";
 ystr+="</SELECT>";
 if (gbDCSeq)
  write(mstr+ystr);
 else
  write(ystr+mstr);
 gcbMon=fGetById(document,"MonSelect");
 gcbYear=fGetById(document,"YearSelect");
 write(" <input type='button' value='"+gsNavNext+"' class='MonthNav' onclick='fNextMonth()'></TD></TR>");
  }

  write("<TR><TD align='center' colspan='3'><DIV style='background:"+gcFrame+(gpicBG?" url("+gpicBG+") ":" ")+gsBGRepeat+";'><TABLE "+gsCalTable+" >");
  fDrawCal();
  gCellSet=getElementsByTagName("A");
  fUpdateCal(gCurMonth[0],gCurMonth[1]);
  write("</TABLE></DIV></TD></TR>");
  if (!gbHideToday) {
 write("<TR><TD align='center' colspan='3'>");
 write("<A id='AToday' href='javascript:' class='Today' onclick='fSetDate(gToday[0],gToday[1],gToday[2]);this.blur();return false;' onmouseover='gcTemp=this.style.color;this.style.color=gcToggle;self.status=this.title;return true;' onmouseout='this.style.color=gcTemp'>"+gsToday+"</A>");
 fGetById(document,"AToday").title=fGetAgenda(gToday)[0];
 write("</TD></TR>");
  }
  write("</TABLE>");
}
</script>
</body>
</html>
-----------------------------------

bit69
bit69
Tue 27 Dec 2005 15:25:19

code ข้างบนนี้คนละอันกับ #1 นะครับ ถ้าดูแล้วก็ขอรบกวนเปลี่ยนจาก คศ เปน พศ ด้วยนะครับ

ขอบคุณมากครับ

Administrator
Tue 27 Dec 2005 16:50:02
เท่าที่ตรวจสอบดูน่าจะอยู่ที่มีการใช้งาน function addEvent() อยู่ในไฟล์แนบครับ ลองดูว่ามีการ addEvent() ของวันที่ 25 ธันวาหรือเปล่าครับ

ส่วนการเปลี่ยนเป็น พ.ศ. ลองเปลี่ยนตรงนี้ดูครับ

function fFormatDate(y,m,d){
  y += 543;
  var M=gbDigital?m<10?"0"+m:m:gMonths[m-1];
  var D=gbDigital&&d<10?"0"+d:d;
  var sy=y%100;
  sy=sy<10?"0"+sy:sy;
  switch (giDatePos) {
 case 0: return D+gsSplit+M+gsSplit+(gbShortYear?sy:y);
 case 1: return M+gsSplit+D+gsSplit+(gbShortYear?sy:y);
 case 2: return (gbShortYear?sy:y)+gsSplit+M+gsSplit+D;
  }
}
bit69
bit69
Wed 28 Dec 2005 14:43:41

ขอบคุณมากครับ แล้วส่วนของวันที่ 25 ล่ะครับ มันเลือกไม่ได้ครับเปนเพราะอะไรหรือครับ

Administrator
Wed 28 Dec 2005 15:21:36
จากโค๊ดที่ตรวจดูแล้วไม่ครบผมไม่สามารถ debug ได้ทั้งหมด แต่เท่าที่อ่านดูแล้วน่าจะดูว่ามีการ เพิ่มค่าเข้าไปในตัวแปร gcTemp ที่ส่วนใดของโค๊ดบ้างครับ เพราะการจะให้คลิ๊กได้หรือไม่ได้มีการอ้างจากตัวแปร gcTemp ครับ หรือลอง debug ดูว่าตัวแปร gcTemp มีค่าเป็นอะไรบ้างก็ได้ครับ
bit69
bit69
Wed 28 Dec 2005 23:25:13

มันมีอยู่ 3 ตัวนะครับ code อันแรกที่ให้ชื่อว่า popcjs.htm

ส่วนอันที่ 2 ชื่อว่า normal.js นะครับ โคดข้างล่างครับ

/********** JS theme file for CalendarXP 4.0 ********/
// ---- FlatCalendar Specific Options ----
var gbCMFocus=true; // true: auto jump to current month when Today-Part is clicked. ; false: no jump.

// ---- PopCalendar Specific Options ----
var gsSplit="-"; // Separator of date string, AT LEAST one char.
var giDatePos=0; // Date format  0: D-M-Y ; 1: M-D-Y; 2: Y-M-D
var gbDigital=false; // Month format   true: 01-05-2001 ; false: 1-May-2001
var gbShortYear=false;   // Year format   true: 2-digits; false: 4-digits

// ---- Common Options ----
var gsPopConfig="top=200,left=200,width=400,height=200,scrollbars=1,resizable=1"; // the look of popup event

var gMonths=new Array("Á¡ÃÒ¤Á","¡ØÁÀҾѹ¸ì","ÁÕ¹Ò¤Á","àÁÉÒ¹","¾ÄÉÀÒ¤Á","ÁԶعÒ¹","¡Ã¡®¡¤Á","ÊÔ§ËÒ¤Á","¡Ñ¹ÂÒ¹","µØÅÒ¤Á","¾ÄȨԡÒ¹","¸Ñ¹ÇÒ¤Á");
var gWeekDay=new Array("Í","¨","Í","¾","¾Ä","È","Ê");

var gBegin=[2000,1,1]; // Valid Range begin from [Year,Month,Date]
var gEnd=[2600,12,31]; // Valid Range end at [Year,Month,Date]
var gsOutOfRange="Sorry, you cannot go beyond the designate range!"; // Range Error Message

var gbEuroCal=false; // Show European Calendar Layout - Sunday goes after Saturday

var giDCStyle=0; // the style of Date Controls. 0:3D; 1:flat; 2:text-only;
var gsCalTitle="gMonths[gCurMonth[1]-1]+' '+gCurMonth[0]"; // dynamic statement to be eval-ed as the title when giDCStyle>0.
var gbDCSeq=true; // when giDCStyle is 3D, true: show month box before year box; false: vice-versa;
var gsYearInBox="i"; // dynamic statement to be eval-ed as the text shown in the year box. i.e. "'A.D.'+i" will show A.D.2001
var gsNavPrev="&lt;"; // The text of left navigator button
var gsNavNext="&gt;"; // The text of right navigator button

var gbHideToday=false; // Remove the Today Part from the bottom
var gsToday="Today : "+gToday[2]+" "+gMonths[gToday[1]-1]+" "+gToday[0]; // The expression of Today-Part.

var giCellWidth=18; // Calendar cell width;
var giCellHeight=18; // Calendar cell height;
var gpicBG=null; // url of background image
var gsBGRepeat="#336600";// repeat mode of background image, NN4 always does repeat. [no-repeat,repeat,repeat-x,repeat-y]
var gsCalTable="border=0 cellpadding=2 cellspacing=1"; // properties of the calendar inside <table> tag
var gsPopTable="border=1 cellpadding=1 cellspacing=0"; // properties of the outmost container <table> tag

var gcBG="#FFFFCC"; // Background color of the cells. Use "" for transparent!!!
var gcCalBG="#6699cc"; // Background color of the calendar
var gcFrame="gray"; // Frame color
var gcTodayBG="#FFCCFF"; // The background highlight color of the cell showing today
var gcSat="darkcyan"; // Saturday color
var gcSun="red"; // Sunday color
var gcWorkday="black"; // Workday color
var gcOtherDay="silver"; // The day color of other months
// gcOtherDay must be set in literal format, digital & rgb() format will not work in either NN6 or NN4!
var gcToggle="yellow"; // highlight color of the focused cell

ส่วนอันที่ 3 มีชื่อว่า normal.css โคดตามข้างล่างนี้ครับ

/********** CSS theme file for CalendarXP 4.0 ********/
/* control the layout, font and font-color of the calendar cell */
.CalHead {text-align:center; font:bold 10pt Arial; color: MintCream;}
.CalCell {cursor:hand; font:10pt Arial; text-align:center;}
.CellAnchor {text-decoration:none; font:9pt Arial;}

/* styles for the "today" part at the bottom */
.Today {text-decoration:none; font:bold 10pt Arial; color:white;}

/* styles for the date selectors (buttons and combos) at the top */
/*.MonthNav {vertical-align:middle; text-decoration:none; height:22; width:18; font:10pt Fixedsys; color:black;}
.CalTitle {vertical-align:middle; font:10pt Arial; color:black;}


คือมันจะบล๊อกเอาไว้คือวันที่ 25 ของเดือน ธันวาคมมันจะให้เป็นวัน คริสมาศ และวันที่ 26 จะเป็นวัน Boxxing day คือ 25 คลิกเลือกไม่ได้ ส่วน 26 เลือกได้แต่มันจะสร้างลิงค์คือแสดงหน้า webpage เล็กๆ ออกมาด้วย ไม่รู้ว่าเป็นเพราะอะไรครับ ช่วยดูให้อีกทีนะครับ

Administrator
Wed 28 Dec 2005 23:49:53
เท่าที่ดูฟังก์ชั่นหายไป อย่างน้อย 1 ฟังก์ชั่นครับ คือ fHoliday() ซึ่งจะเป็นส่วนที่ตรวจสอบว่าเป็นวันหยุดหรือไม่ ต้องลองหาฟังก์ชั่นนี้ดูครับว่าอยู่ในไฟล์ใด ซึ่งเท่าที่ให้มานี้ไม่มีนะครับ การตรวจสอบถ้าหาฟังก์ชั่นนี้เจอแล้วลองดูว่า ตัวแปรที่ฟังก์ชั่นนี้ทำการตรวจสอบชื่ออะไรมีการเซ็ทค่ามาจากที่ใดครับ
bit69
bit69
Thu 29 Dec 2005 01:51:27

ไม่มีนะครับ   code ที่ผมให้มันก็มีอยู่ทั้งหมดแค่นี้นะครับ ผมก็ลอง bug ดูหลายนานเหมือนกันก็ยังไม่เจอ เอางัยดีครับ จะมีทางแก้ไขหรือป่าวครับ

Administrator
Thu 29 Dec 2005 19:25:51

น่าจะมีอีกนะครับ เพราะเท่าที่ลอง copy ทั้งหมดมารันแล้วไม่ผ่านนะครับ แจ้งว่ามีตัวแปรไม่ครบครับ โดยมีการอ้างถึงไฟล์

var gfSelf=fGetById(parent.document,self.name);
with (document) {
 write("<lin"+"k rel='stylesheet' type='text/css' href='"+gTheme[1]+".css'>");
 write("<scr"+"ipt language='JavaScript' src='"+gTheme[1]+".js'></scr"+"ipt>");
    write("<scr"+"ipt language='JavaScript' src='"+gTheme[2]+"'></scr"+"ipt>");

}

bit69
bit69
Fri 30 Dec 2005 10:28:05

เจอแล้วครับ คือผม copy มาไม่หมดนะครับ ขอโทษทีนะครับ

ขอบคุณมากเลยครับ

ลัลน์
ลัลน์
Mon 10 Apr 2006 15:32:14

ช่วยบอกโค้ดการทำปฏิทินหน่อยสิค่ะ

ข้างบนมันงง

rain
rain
Thu 5 Jul 2007 10:43:26
ขอโคต java scrips ปฏิทินที่เป็นภาษาไทย แบบเลือกได้หน่อยคะ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login