-1

if (x < y) は機能しますが、if(x<=y) は Javascript では機能しません。前者の場合は if ステートメントが評価され、後者の場合は if ステートメントは無視されます。

コードは次のとおりです。

var totalFrames = 12;

ここで、showvalue 関数は HTML から値を受け取ります。

<input type="range" min="2" max="36" step="2" value="2" name="totalFrames" 
      onChange="showValue(this.value);" width: 80%" value="2"/>
<p>Total Frames: <span id="totalFrames">2</span> 


function showValue(newValue) {
         document.getElementById("totalFrames").innerHTML = parseFloat(newValue);
         totalFrames = parseInt(newValue);
         var winkel = 360.0/totalFrames;
         document.getElementById("angle").innerHTML = winkel.toFixed(1);
         var maxFrame = document.getElementsByName("actFrame")[0];
         maxFrame.max = parseInt(newValue);
}

function motorCommunication() { 
      actFrame = document.getElementById("actFrame").value;
      actualFrame = parseInt(document.getElementById("actFrame").value);
      document.getElementById("range").innerHTML = actFrame; 

/* この行は機能します -- if ステートメントは無視されません*/

if ( Number(actualFrame) < Number(totalFrames) ) { 

/* この行は機能しません -- if ステートメントは無視されます*/

if ( Number(actualFrame) <= Number(totalFrames) ) {

     var url = "/cgi-bin/bn_events.py?actualFrame=" + escape(actualFrame) 
         + "&totalFrames=" + escape(totalFrames) 
         + "&seconds=" + escape(seconds);
     request.open("GET", url, true);
     request.onreadystatechange = updatePage;
     request.send(null);
     actualFrame++;
  }
  else {
       document.getElementById("returnedStatus").value = "DONE.";
  }
}

function updatePage() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      /* Get the response from the server */
      var motorResponse = request.responseText;
      motorData = new Array();
      //motorData = request.responseText;
      motorData = motorResponse.substring(0,motorResponse.length-1).split(",");
      /* Update the HTML web form */
      document.getElementById("returnedFrame").value = motorData[0];
      document.getElementById("returnedTotalFrames").value = motorData[1]
      document.getElementById("returnedStatus").value = motorData[2];
      document.getElementById("actFrame").value = parseInt(actualFrame);
      document.getElementById("actualStatus").value = parseInt(actualFrame);     
      setTimeout(motorCommunication(),300);
      } else {
      alert("Error! Request status is " + request.status);
      }
    }
}

私が見つけたのは、

if ( Number(actualFrame) <= 12 ) {

それは完全に動作します....

今は無力です...コメントに感謝します。

4

1 に答える 1

0

修正しました... str から Int などとは何の関係もありませんでした... if ステートメントの位置が間違っていました。そのため、いくつかの変数が台無しになりました。

function motorCommunication() {
         /* NEEDS TO BE HERE... */
         if ( actualFrame <= lastFrame * 1.0 ) {
         actFrame = document.getElementById("actFrame").value;
         actualFrame = parseInt(document.getElementById("actFrame").value);
         document.getElementById("range").innerHTML = actFrame * 1.0;  
         //lastFrame = parseInt(document.getElementsByName("totalFrames")[0].value); 
         document.getElementById("returnedTotalFrames").value = lastFrame * 1.0;
         //WRONG HERE: if ( actualFrame <= lastFrame * 1.0 ) {
            var url = "/cgi-bin/bn_events.py?actualFrame=" + escape(actualFrame) 
            + "&totalFrames=" + escape(lastFrame) 
            + "&seconds=" + escape(seconds);
            //var url = "/cgi-bin/bn_events.py?actualFrame=" + escape(actFrame);
            request.open("GET", url, true);
            request.onreadystatechange = updatePage;
            request.send(null);
            actualFrame++;
            } else {
            document.getElementById("returnedStatus").value = "DONE.";
         }
}

今よりもうまく機能します。ブラウザから独立...

ご助力いただきありがとうございます。ピーター

于 2013-04-05T20:48:52.663 に答える