我正在尝试将下划线字符串中的下划线替换为单词字符串中的相应字母(请参阅片段中的完整代码),到目前为止,我遇到了奇怪的错误,它不会检查所有下划线或会错过一,无论如何要修复它?如果需要的话我很乐意重建它。
var underscore = "";
var letter;;
var wordList = ["apple", "peach", "pear", "mango", "banana", "paper", "pens", "laptop", "desk", "chair", "star", "sky", "moon", "sun", "planets"];
var word = wordList[Math.floor(Math.random() * wordList.length)];
for (i = 0; i < word.length; i++) {
var underscore = underscore + "_ ";
}
var replaceletter = 0
for (i = 0; i < word.length; i++) {
replaceletter = word.indexOf(letter, replaceletter);
underscore = underscore.replace(underscore.charAt(replaceletter), word.charAt(replaceletter));
}
/* Hangman Game CSS File */
body
{
background-color: #1B264F;
}
#main {
background-color: #5386E4;
height: 97vh;
width: 95vw;
vertical-align: middle;
}
canvas {
padding-left: 0;
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: block;
margin-top: auto;
margin-bottom: auto;
}
<!DOCTYPE html>
<html>
<head>
<title>Hangman by Lachlan Teale</title>
<meta name="description" content="Lachlan Teale's Hangman Game 2015">
<meta name="keywords" content="hangman, lachlan, teale, Javascript">
<meta charset="UTF-8">
<meta name="author" content="Lachlan Teale">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<canvas id="main" width="1920" height="1080" style="border:1px solid #d3d3d3;"></canvas>
<script type="text/javascript">
//setting variables
var canvas = document.getElementById('main');
var context = canvas.getContext('2d');
var underscore = "";
var letter;
var complete = false;
//list of words
var wordList = ["apple", "peach", "pear", "mango", "banana", "paper", "pens", "laptop", "desk", "chair", "star", "sky", "moon", "sun", "planets"];
//picking a random word from the list
var word = wordList[Math.floor(Math.random() * wordList.length)];
//print out the underscores for the number of letters
for (i = 0; i < word.length; i++) {
var underscore = underscore + "_ ";
}
context.font = '50pt Calibri';
context.textAlign = 'center';
context.fillStyle = '#E2E2E3';
context.fillText(underscore, canvas.width * 0.5, canvas.height * 0.70);
//correct letter text
context.font = 'bold 30pt Calibri';
context.textAlign = 'center';
context.fillStyle = '#E2E2E3';
context.text
context.fillText("Correct Letters", canvas.width * 0.08, canvas.height * 0.05);
//Wrong Letter text
context.font = 'bold 30pt Calibri';
context.textAlign = 'center';
context.fillStyle = '#E2E2E3';
context.text
context.fillText("Wrong Letters", canvas.width - (canvas.width * 0.08), canvas.height * 0.05);
//checking which button is pressed
window.addEventListener('keydown', function(event) {
if ( event.keyCode >= 65 && event.keyCode <= 90 ) {
context.clearRect(0, canvas.height * 0.80, canvas.width, canvas.height);
letter = String.fromCharCode( event.keyCode ).toLowerCase();
context.font = '50pt Calibri';
context.textAlign = 'center';
context.fillStyle = '#E2E2E3';
context.fillText(letter, canvas.width * 0.5, canvas.height * 0.85);
}
});
//checking if back key is pressed
document.addEventListener('keydown', function(event) {
if ( event.keyCode == 8 ) {
context.clearRect(0, canvas.height * 0.80, canvas.width, canvas.height);
}
});
//checking if enter is pressed
document.addEventListener('keydown', function(event) {
if( event.keyCode == 13 ) {
//checking if letter is in the word
var replaceletter = 0
for (i = 0; i < word.length; i++) {
replaceletter = word.indexOf(letter, replaceletter);
underscore = underscore.replace(underscore.charAt(replaceletter), word.charAt(replaceletter));
}
context.clearRect(canvas.width * 0.4, canvas.height * 0.3, canvas.width *0.7, canvas.height * 70);
context.font = '50pt Calibri';
context.textAlign = 'center';
context.fillStyle = '#E2E2E3';
context.fillText(underscore, canvas.width * 0.5, canvas.height * 0.70);
}
});
</script>
</body>
</html>
最佳答案
您可以使用此循环替换它们:
for (i = 0; i < word.length; i++) {
underscore = underscore.replace("_", word.charAt(i));
}
可能有更优雅的解决方案,但即使这是你想要的,我也不太明白。
关于javascript - 替换javascript中字符串中的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060534/