Я пытаюсь получить элемент с идентификатором 1a, 2a, 3a и т. Д. В зависимости от того, когда функция запускается.

Затем он сравнивает значение этого элемента (используя jQuery) со значением input, где функция неверна. Вызывает ошибку:

TypeError: var1.toUpperCase не является функцией. (в 'var2.toUpperCase ()', 'var1.toUpperCase' не определено)

Любая помощь будет оценена. Спасибо (ОБНОВЛЕНИЕ обычно будет текст под вопросомNumber, например: 1, 2, 3 и т.д. каждый раз, когда запускается другая функция.)


РЕДАКТИРОВАТЬ: каждый раз, когда запускается другая функция, questionNumber увеличивается на 1. Я сохраняю текст questionNumber в переменной с именем word. Затем я добавляю к этой переменной букву a. Затем я получаю элемент с идентификатором переменной word, затем сравниваю его содержимое со значением 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="">
1
TheHTMLCODERjs 5 Дек 2020 в 20:18

2 ответа

Лучший ответ

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="">
0
Pirate 5 Дек 2020 в 18:35

В вашем коде ($('#questionNumber').text()+'a') эта часть возвращает просто "a", так как текст идентификатора "questionNumber" ничего не значит.

А в вашем HTML есть такой id. Я думаю, что внесите изменения в свой HTML-код вот так,

<span class="ihide" id="questionNumber">1</span>

Это должно сработать.

РЕДАКТИРОВАТЬ: Кроме того, не могли бы вы поделиться кодом JS, связанным с «элементом», в этой части тоже может быть ошибка.

-1
srinath-nanduri 5 Дек 2020 в 17:37