Javascript TypeError 代码出错,变量未定义

Posted

技术标签:

【中文标题】Javascript TypeError 代码出错,变量未定义【英文标题】:Error with Javascript TypeError code, variable undefined 【发布时间】:2021-03-17 11:08:36 【问题描述】:

我正在尝试根据函数何时运行来获取 ID 为 1a2a3a 等的元素。

然后它将元素值(使用 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 wordp标签,所以你需要获取它的内部文本并与输入文本进行比较。此外,在替换它时,访问它的 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 代码进行此更改:

&lt;span class="ihide" id="questionNumber"&gt;1&lt;/span&gt;

这应该可行。

编辑:另外,您能否分享与“项目”相关的 JS 代码,那部分也可能有错误。

【讨论】:

我很抱歉指出这一点,但有人可以解释我哪里错了吗? @海盗可以吗?我有点困惑。 通过查看 html,您部分正确地认为文本为空。我也有同样的疑问,但是 op 说它将由 JavaScript 填充,所以实际上会有一些东西。最终,该代码将返回 1a、2a 等。但是,由于很少使用 JavaScript 和 jquery 方法,它仍然无法正常工作。检查我在 js 函数 op 中修复的答案。它在那里工作。 哦,好的,感谢您的澄清,@Pirate 明白了。

以上是关于Javascript TypeError 代码出错,变量未定义的主要内容,如果未能解决你的问题,请参考以下文章

使用 useeffect 和 useref TypeError 时出错:无法读取 null 的属性“getBoundingClientRect”

Vue警告:创建的钩子出错:“TypeError:无法读取未定义的属性'get'”

尝试导入 Cropperjs 给出:TypeError:解析模块说明符时出错:cropperjs

导入 TensorFlow 时出错。 TypeError:预期字节,找到描述符

TypeError:调用元类基“函数”对象时出错不可迭代

TypeError:调用元类基时出错,新式类不能只有经典基