因此,我尝试阅读<textarea>
输入,将其分成单独的单词,然后检查每个单词是否等于关键字列表中的单词。
我已经完成了代码,当我测试时,它没有工作。当我调试它时,我看到当它比较来自<textarea>
的字符串和一个看起来相同的常量字符串时,它认为它们是不相等的。
我试图从<textarea>
中取出字符串(完全相同,复制粘贴它)并将其与静态字符串静态比较,然后它变为真。
如果你知道问题可能是什么,我会很高兴听到。 感谢。
代码:
function run() {
debugger;
code = document.getElementById("codeArea").value;
cleanDots();
words = code.split(" ");
compile();
}
function compile() {
for (i = 0; i < words.length; i++) {
var w = words[i];
if (w == "test")
alert("test - true");
}
}
function cleanDots() {
for (var j = 0; j < code.length; j++) {
if (code.charAt(j) == ".") {
var p1 = code.substring(0, j);
var p2 = code.substring(j + 1, code.length);
code = p1 + " " + p2;
}
}
}
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>דוס סקריפט סביבת פיתוח</title>
<style type="text/css">
body{
padding: 0;
margin: 0;
}
textarea{
width: 95%;
padding: 10px;
height: 700px;
text-align: right;
float: right;
}
button{
width: 95%;
padding: 10px;
text-align: center;
float: right;
background-color: green;
}
</style>
</head>
<body>
<textarea id="codeArea">
</textarea>
<button id="submit" onclick="run()">הרץ</button>
<script src="compiler.js"></script>
<script src="methods.js"></script>
</body>
</html>
答案 0 :(得分:1)
首先,您在cleanDots
函数中实际执行的是实现JavaScript replace()
方法,此函数应如下所示:
function cleanDots() {
code = code.replace(".", " ");
}
function run() {
debugger;
code = document.getElementById("codeArea").value;
cleanDots();
words = code.split(" ");
compile();
}
function compile() {
for (i = 0; i < words.length; i++) {
var w = words[i];
if (w == "test")
alert("test - true");
}
}
&#13;
body {
padding: 0;
margin: 0;
}
textarea {
width: 95%;
padding: 10px;
height: 700px;
text-align: right;
float: right;
}
button {
width: 95%;
padding: 10px;
text-align: center;
float: right;
background-color: green;
}
&#13;
<textarea id="codeArea">
</textarea>
<button id="submit" onclick="run()">הרץ</button>
<script src="compiler.js"></script>
<script src="methods.js"></script>
&#13;
除此之外,您的代码将执行得很好。
答案 1 :(得分:0)
在cleanDots函数中,您希望用空格替换所有点 你可以这样做:
function cleanDots() {
code = code..replace(/[\.]/g, " ");
}
使用/[.]/g正则表达式,您尝试了所有出现的点,然后用空格替换它。
答案 2 :(得分:0)
我真的不知道问题是什么。 我重写了一些代码,在浏览器中重新打开它,然后就可以了。 我发现代码和新代码之间没有任何区别。
我发现的唯一差异是从if
switch
更改,但我检查过,现在它也适用于if
。我改变的另一件事是替换我的&#34; cleanDots
&#34;使用code.replace(".", " ")
的方法,建议使用 chsdk 。我也在这里查了一下,而且我的方法也很好用。
新代码:
function run() {
debugger;
code = document.getElementById("codeArea").value;
code = code.replace(".", " ");
words = code.split(" ");
compile();
}
function compile() {
for (i = 0; i < words.length; i++) {
var w = words[i];
switch(w) {
case "הדפס":
dosPrint();
break;
}
}
}
非常感谢。