我希望在字符串中包含一个字符时打印一个红色圆圈' 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();
}
}
}
答案 0 :(得分:4)
这里有几个错误。我将在下面的实时代码中发表评论:
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;