错误:未获得所需的输出

时间:2015-04-15 21:49:31

标签: javascript html canvas

我希望在字符串中包含一个字符时打印一个红色圆圈' e'如果它包含任何其他字符,则为黑色圆圈。

我不知道到底哪里弄错了。有人能帮我吗?。

这是我试过的代码。

HTML

<input id="e-" placeholder="type eg:-e---ee---e" type="text" size="50"/>

<button onclick="start()">diagram</button> 

<canvas id="myCanvas"></canvas>

JavaScript

function start() {
  var c = document.getElementById("myCanvas");
  var ctx = c.getContext("2d");
  var str = getElementByID("e-");
  var i;
  for( i=0; i < str.length(); i++ ) {
    if( str.charAt(i) == "e" ) {
      ctx.beginPath();
      ctx.arc(100, 75, 10, 0, 2 * Math.PI);
      ctx.fillStyle = "red";
      ctx.fill();
      ctx.stroke();
    } else {
      ctx.beginPath();
      ctx.stroke();
      ctx.arc(100, 75, 10, 0, 2 * Math.PI);

      ctx.fillStyle = "black";
      ctx.fill();
    }
  }
}

1 个答案:

答案 0 :(得分:4)

这里有几个错误。我将在下面的实时代码中发表评论:

&#13;
&#13;
function start() {
  var c = document.getElementById("myCanvas");
  var ctx = c.getContext("2d")
  
  // must be prefixed with document., small d in Id, and suffixed with value
  var str = document.getElementById("e-").value;
  var i = 0, ch;
  while(ch = str[i++]) {    // no () behind length, changed to while loop
    ctx.beginPath();
    if (ch === "e") {       // just check straight
      ctx.arc(100, 75, 10, 0, 2 * Math.PI);
      ctx.fillStyle = "red";
      ctx.fill();
      ctx.stroke();
    } else {
      ctx.arc(100, 75, 10, 0, 2 * Math.PI);
      ctx.fillStyle = "black";
      ctx.fill();
    }
    // need to move the arc position on x axis
    ctx.translate(22, 0);         // diameter + 2 pixels
  }
  ctx.setTransform(1,0,0,1,0,0);  // reset translate
}
&#13;
<input id="e-" placeholder="type eg:-e---ee---e" type="text" size="50" />
<button onclick="start()">diagram</button>

<canvas id="myCanvas" width=600 ></canvas>
&#13;
&#13;
&#13;