Javascript 脚本显示未定义
我有一个脚本,可以让用户输入一个文本,然后将其翻译成其他内容。只有当单词只有一个字母时,它才起作用。当有超过1个字母时,表示未定义 以下是脚本:Javascript 脚本显示未定义,javascript,Javascript,我有一个脚本,可以让用户输入一个文本,然后将其翻译成其他内容。只有当单词只有一个字母时,它才起作用。当有超过1个字母时,表示未定义 以下是脚本: function copyit(theField) { var tempval = eval("document." + theField) tempval.focus() tempval.select() therange = tempval.createTextRange() therange.execCom
function copyit(theField) {
var tempval = eval("document." + theField)
tempval.focus()
tempval.select()
therange = tempval.createTextRange()
therange.execCommand("Copy")
}
function results() {
var behavior = "form";
var text = document.csrAlpha.csrresult2.value;
var ff22 = text.toLowerCase();
var Words = new Array;
Words["b"] = "Dadada";
Words["bob"] = "Robert";
Words["flower"] = "Banana";
Words["brad"] = "Chair";
var trans = "";
var regExp = /[\!@#$%^&*(),=";:\/]/;
var stringCheck = regExp.exec(ff22);
if (!stringCheck) {
if (ff22.length > 0) {
for (var i = 0; i < ff22.length; i++) {
var thisChar = ff22.charAt(i);
trans += Words[thisChar] + " ";
}
} else {
trans += "Please write something.";
}
} else {
trans += "You entered invalid characters. Remove them and try again.";
}
document.csrAlpha.csrresult.value = trans;
}
以及HTML:
<table>
<tr>
<td align="center" class="cleanuphtml-1">
<form name="csrAlpha">
Please insert your text below:<br />
<input type="text" class="tb3" name="csrresult2" size="70" maxlength="120" autocomplete="off" onkeydown="results()" onkeyup="results()" onkeypress="return handleEnter(this, event);" />
<input type="reset" value="Reset" onclick="csrAlpha.csrresult2.focus();" />
<p>
<textarea name="csrresult" class="tb7" cols="71" rows="10" value=""></textarea>
</p>
</form>
</td>
</tr>
</table>
如果该单词不在数组中,则将无法定义。如果您键入Bo,那么您将得到未定义的Bo,因为Bo不在您的数组中 您正在使用按键事件调用脚本。如果用户试图键入Bob,则会发生这种情况 b-b在阵列中,没有问题 bo-bo不在数组中,因此未定义
bob-javascript轰炸了bo,所以你不会走到这一步。我不知道你从哪里复制的,也不知道你为什么会考虑这样做 这是一个更好的实现。下次在依赖别人之前,请先做些研究 HTML部分
<table>
<tr>
<td align="center" class="cleanuphtml-1">
<form name="csrAlpha">
Please insert your text below:<br />
<input type="text" class="tb3" name="csrresult2" id="csrresult2" size="70" maxlength="120" autocomplete="off" onkeyup="translate()" />
<input type="reset" value="Reset" onclick="csrAlpha.csrresult2.focus();" />
<p>
<textarea name="csrresult" id="csrresult" class="tb7" cols="71" rows="10" value=""></textarea>
</p>
</form>
</td>
</tr>
</table>
而JS部分:
<script>
var Words = {
"b" : "Dadada",
"bob" : "Robert",
"flower" : "Banana",
"brad" : "Chair"
}
function translate(){
text = document.getElementById("csrresult2").value.toLowerCase();
if(typeof Words[text] != "undefined")
document.getElementById("csrresult").value=Words[text];
else
document.getElementById("csrresult").value="Text not found!";
}
</script>
你能不能不要把你的代码空间增加四倍?对不起,我现在就改。不要小气;这很难读。只是一个提示,var tempval=evaldocument.+theField与var tempval=document[theField]相同。你永远不需要在Javascript中使用eval,除非是在一些非常危险的情况下。这不是你的问题,但你应该不惜一切代价避免eval…几乎总有更好的方法。Johnie是对的,我添加的内容将输出一个信息更丰富的错误,同时确保您的html中有类似于或修改fieldID的内容。嗨,Dany,我已经做了两天的研究,这就是为什么我试图从一个可能比我知道得更多的社区获取信息。我试过你的代码,但一旦我按照你的建议修改了它,脚本就不起作用了。好吧,我给你的只是为了让你开始:我会修改一下我的答案,这样你就有东西可以用了谢谢!你显然可以看出我是个笨蛋:非常感谢你的帮助!我真的很钦佩你们的速度和专业!我很高兴我找到了这个网站!谢谢,那我怎么能推翻它呢?Dany帖子中的if语句会处理它。