Javascript TypeError 代码出错,变量未定义
Posted
技术标签:
【中文标题】Javascript TypeError 代码出错,变量未定义【英文标题】:Error with Javascript TypeError code, variable undefined 【发布时间】:2021-03-17 11:08:36 【问题描述】:我正在尝试根据函数何时运行来获取 ID 为 1a
、2a
、3a
等的元素。
然后它将元素值(使用 jQuery)与函数错误的 input
的值进行比较
它提出了一个错误说:
TypeError: var1.toUpperCase 不是函数。 (在 'var2.toUpperCase()' 中,'var1.toUpperCase' 未定义)
任何帮助将不胜感激。 谢谢 (更新通常会在问题编号中出现文本,例如:1、2、3 等,每次运行另一个函数时。)
编辑:每次运行不同的函数时,questionNumber
都会增加 1。我将 questionNumber
的文本保存在一个名为 word
的变量中。然后我将字母a
添加到该变量中。然后,我得到具有变量word
的ID 的元素,然后将其内容与input
的值进行比较,但比较是大写以避免出现问题。如果它们相等,input
将替换为带有绿色文本的div
。希望这能让它更清楚。
function textVerify(item)
var word= document.getElementById(($('#questionNumber').text()+'a'));
if (item.value.toUpperCase() === word.toUpperCase())
item.style.color = "green";
$( item ).replaceWith( "<div style='color:green;'>"+word+"</div>" );
main()
else
item.style.color = "black";
<span class="ihide" id="questionNumber"></span>
<p id="1a" class="ihide">Seven</p>
<input id="1" name="Seven" type="text" value="" onkeyup="textVerify(this)" autofocus="">
【问题讨论】:
questionNumber
中有什么文字?我没有看到
请添加完整的 javascript 并解释您想要实现的目标。什么时候应该发生什么?
什么是main()?解决方案必须在 jquery 中还是 vanilla js 可以?
@ThehtmlCODERjs 我已经稍微修改了您的代码并解决了这个问题。请查看我的answer below,如果您有任何疑问,请告诉我。
【参考方案1】:
var word
是p
标签,所以你需要获取它的内部文本并与输入文本进行比较。此外,在替换它时,访问它的 text()
属性。见下文。 main()
这里注释掉了,你可以根据需要保留。
function textVerify(item)
var word = document.getElementById(($('#questionNumber').text() + 'a'));
if (item.value.toUpperCase() === $(word).text().toUpperCase())
item.style.color = "green";
$(item).replaceWith("<div style='color:green;'>" + $(word).text() + "</div>");
//main()
else
item.style.color = "black";
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span class="ihide" id="questionNumber">1</span>
<p id="1a" class="ihide">Seven</p>
<input id="1" name="Seven" type="text" value="" onkeyup="textVerify(this)" autofocus="">
【讨论】:
【参考方案2】:在您的代码 ($('#questionNumber').text()+'a')
中,这部分仅返回“a”,因为 id questionNumber
的文本什么都不是。
在你的 HTML 中没有这样的 id。我认为您需要对 HTML 代码进行此更改:
<span class="ihide" id="questionNumber">1</span>
这应该可行。
编辑:另外,您能否分享与“项目”相关的 JS 代码,那部分也可能有错误。
【讨论】:
我很抱歉指出这一点,但有人可以解释我哪里错了吗? @海盗可以吗?我有点困惑。 通过查看 html,您部分正确地认为文本为空。我也有同样的疑问,但是 op 说它将由 JavaScript 填充,所以实际上会有一些东西。最终,该代码将返回 1a、2a 等。但是,由于很少使用 JavaScript 和 jquery 方法,它仍然无法正常工作。检查我在 js 函数 op 中修复的答案。它在那里工作。 哦,好的,感谢您的澄清,@Pirate 明白了。以上是关于Javascript TypeError 代码出错,变量未定义的主要内容,如果未能解决你的问题,请参考以下文章
使用 useeffect 和 useref TypeError 时出错:无法读取 null 的属性“getBoundingClientRect”
Vue警告:创建的钩子出错:“TypeError:无法读取未定义的属性'get'”
尝试导入 Cropperjs 给出:TypeError:解析模块说明符时出错:cropperjs