GORAGOD.com

freelance, web developer, web designer, hosting, domain name

Tab ด้วย Ajax

AJAX Tab เป็นการใ้ช้งาน AJAX ในการโหลดข้อมูลใส่ Tab ที่ต้องการเพื่อแสดงผล ด้วยการใช้ AJAX ทำให้เราไม่ต้องเตรียมข้อมูลเพื่อโหลดเอาไว้ก่อน เป็นการประหยัดเวลาตอนโหลดครั้งแรก หากมีหลาย Tab
 
การปรับแต่ง Tab ในลักษณะต่างๆ สามารถกำหนดได้ด้วย CSS ครับ โดยที่ส่วนที่เป็น AJAX นั้นเหมือนเดิมทุกประการ
<style type="text/css">
#tab {
  display:block;
  width:400px; /* ความกว้างของ Tab */
}
#content_tab {
  border:1px solid red;
  display:block;
  height:150px; /* ความสูงของ Tab */
  overflow:auto; /* แสดง scrollbar */
  padding:2px;
  background:#ffffff; /* สีพื้น */
  font-size:100%;
}
#tab ul {
  list-style-type:none;
  float:right; /* Tab ชิดขวา */
}
#tab li {
  display:inline;
  position:relative;
}
#tab li a {
  font-weight:bold; /* ตัวอักษรหนา */
  text-decoration:none; /* ไม่ขีดเส้นใต้ */
  color:#cccccc; /* สีตัวอักษร */
  background:#f0f0f0; /* สีพื้นตอนปกติ */
  border-bottom:4px solid #cccccc; /* สีกรอบด้านล่างตอนปกติ */
  padding:0 20px 3px 20px;
}
#tab li a:hover {
  color:red; /* สีตัวอักษรเมื่อเมาส์อยู่บน */
  border-bottom:4px solid red; /* สีกรอบด้านล่างเมื่อเมาส์อยู่บน */
  background:#f4f4f4; /* สีพื้นเมื่อเมาส์อยู่บน */
}
#tab li.selected a { /* เมื่อ Tab ถูกเลือก */
  color:red;
  border-bottom:4px solid red;
  border-left:1px solid red;
  border-right:1px solid red;
  padding-top:1px; /* เลื่อน Tab ขี้นเพื่อลบกรอบ */
  background:#ffffff;
}

</style>

<script type="text/javascript">
function Inint_AJAX() {
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
   try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
   alert("XMLHttpRequest not supported")
   return null
}

function dotabclick(id, page) {
  document.getElementById('content_tab').innerHTML = '<br />&nbsp;&nbsp;<img src="../images/wait3.gif" alt="loading" /> loading...' //รูปรอโหลด
  var ul = document.getElementById(id).parentNode
  var lilist = ul.getElementsByTagName("li")
  for (var n = 0; n < lilist.length; n++) {
    if (lilist[n].id == id) lilist[n].className="selected"
    else lilist[n].className=""
  }
  var req = Inint_AJAX() //สร้าง Object
  req.open('GET', page, true)
  req.onreadystatechange = function() { //เหตุการณ์เมื่อมีการตอบกลับ
    if (req.readyState == 4) {
      if (req.status == 200) { //ได้รับการตอบกลับเรียบร้อย
        document.getElementById("content_tab").innerHTML = req.responseText //ข้อความที่ได้รับการตอบกลับ
      }
    }
  }
  req.send(null) //ทำการส่ง
}
// สำหรับการเรียกครั้งแรกเมื่อโหลดหน้าเพจ
window.onload = function() {
    dotabclick('tab1', 'ajax/page1.php');
};
</script>
<div id="tab">
  <div id="content_tab"></div>
  <ul>
    <li id="tab1"><a href="javascript:dotabclick('tab1', 'ajax/page1.php')" title="แสดงตัวอย่าง">Preview.</a></li>
    <li id="tab2"><a href="javascript:dotabclick('tab2', 'ajax/page2.php')" title="แก้ไข HTML">HTML.</a></li>
  </ul>
</div>

page1 และ page2 คือหน้าที่จะเรียกมาแสดงเมื่อคลิกแต่ละ Tab ครับ

ตัวอย่าง
0SHAREFacebookLINE it!
^