A-AA+then

เรื่องฟังก์ชั่นครับ และการส่งค่าตัวแปรครับ

1,340
<script>
lyr=new Array(); //สร้าง Array

function decrease_num()
{
      if(wait_time>0)
          {  
                var show_place=document.getElementById('show');   
                show_place.innerHTML="wait"+A;   
                A--;   
          }
      else
          {  
                if(wait_time==0)
                      {   
                          alert(0);   
                      }     
          }  
}

function begin()
{
     lyr[0] = document.myform.elements['N'].value;  //รับค่า N จาก php
     lyr[1] = document.myform.elements['o'].value;  //รับค่า o  จาก php
     lyr[2] = document.myform.elements['H'].value;  //รับค่า H  จาก php
     lyr[3] = document.myform.elements['M'].value;  //รับค่า M  จาก php
     lyr[4] = document.myform.elements['S'].value;   //รับค่า S  จาก php

      if(lyr[1]==1)
          {
                if(lyr[0]==1)
                       { 
                              A = lyr[2]*3600 + lyr[3]*60 + lyr[4]*1 
                                    var vela=setInterval("decrease_num()",1000);   
                                    setTimeout("clearInterval("+vela+")",(A+1)*1000);
   }
</script>

<div id="show">area</div>

ปัญหาคือ ค่า A ผมอยากให้เกิดจากการรับค่าจาก php แต่ค่าที่รับมาอยู่ในฟังก์ชั่น begin ซึ่งเมื่อเราเรียก ไปที่ฟังก์ชั่น decrease_num() แล้ว ค่า A ของผมไม่ลด แต่เมื่อผมลองประกาศค่า ตัวแปร A ไว้นอก ฟังก์ชั้น เช่น A=60; โปรแกรมก็จะทำงานปรกติ (แต่ผมอยากได้ค่าที่เกิดจาการรับค่าครับ)
รบกวนถามว่ามีการส่งค่าข้ามฟังก์ชั่นได้ไหมครับ หรือถ้าไม่ได้แล้วพอจะมีวิธีอะไรมั้งครับ คือที่ผมทำจะเป็นการรับค่า เวลา จาก php ชั่วโมง นาที วินาที แล้วนำมาบวกกัน แล้วก็นำมานับถอยหลังครับ

2 ความคิดเห็น

คือสาเหตุที่ไม่ลด ผมก็ทราบครับว่าเกิดการ ค่าตัวแปร ที่ประกาศในฟังก์ชั่นมันไม่สามารถเรียกจากนอกฟังก์ชั่นได้ แต่ผมกดส่งค่าจากปุม button ซึ่งเรียก onload มาที่ฟังก์ชั่น begin ก็เลยเกิดปัญหาครับ
1

1.ตัวแปรแบบ global สามารถใช้งานได้ตลอดทั้งโปรเจ็คครับ เช่น lyr=new Array(); 
2.ข้อผิดพลาดน่าจะอยู่ที่ A = lyr[2]*3600 + lyr[3]*60 + lyr[4]*1 เนื่องจาก lyr[] น่าจะเก็บ string ไว้ เนื่องจากรับค่ามาจาก element ทางที่ดี ควร แปลงเป้น ตัวเลขก่อน ด้วย parseFloat() ครับ
2
^