Метод Jquery text() и условный оператор не могут указывать пустую строку

myTags.html

<div id = "ControlWrapper">
    <p>​</p>
    <p><br></p>
    <p>​​</p>
</div>

myScripts.js

var a  = $("#ControlWrapper").text();
    if (a == ""){do something;}else {do something else;}

<div id = "ctl00_PlaceHolderMain_txtContent__ControlWrapper_RichHtmlField" class = "ms-rtestate-field" style = "display: block;" aria-labelledby = "ctl00_PlaceHolderMain_txtContent_label">
    <p>​</p>
    <p><br></p>
    <p>​​</p>
</div>

Привет, у меня есть приведенные выше коды в моих файлах html и javascrpt.

Я хочу получить текст из элемента и сохранить его в переменной, тогда, если он пуст, он должен вернуть false в условном выражении, но, к сожалению, это не работает.

Мне нужно сравнить текст, когда внутри элемента нет текста.

Есть опечатка, так как тег id не закрывается конечным знаком "

kevinSpaceyIsKeyserSöze 30.03.2023 08:50

И можете ли вы предоставить минимальный воспроизводимый пример, пожалуйста

kevinSpaceyIsKeyserSöze 30.03.2023 08:54

if (!a) { console.info("истинное значение") }else { console.info("ложное значение") }

rajiv gandhi 30.03.2023 08:57

В вашем примере внутри абзацев есть невидимые символы (нулевой ширины). Так что они не пустые.

TiiJ7 30.03.2023 09:02

@TiiJ7 TiiJ7, как удалить эти пробелы нулевой ширины. Есть идеи

rajiv gandhi 30.03.2023 09:08

Вы можете заменить все символы, которые не являются текстом, регулярным выражением a.replace(/[^a-zA-Z]+/g, '') == "", это удалит все специальные символы.

kevinSpaceyIsKeyserSöze 30.03.2023 09:16

@kevinSpaceyIsKeyserSöze спасибо за помощь. но регулярное выражение должно позволять звуку не заменять числа и специальные символы

rajiv gandhi 30.03.2023 09:48

когда текста нет - скопируйте и вставьте ваш код в редактор - ваш текст не будет пустым. Удаление символов \u200b и обрезка() не поможет, так как ваш HTML содержит новые строки, которые включены в .text(). Самое простое решение — не включать \u200b в свой вывод. Но .text() по-прежнему дает пробелы и новые строки, которые можно обрезать(). Если это не вариант, используйте: .text().replace(/\u200b/g, "").trim() хотя вы, вероятно, получите другие «специальные символы» в какой-то момент.

freedomn-m 30.03.2023 09:55

Это просто предупреждение, а не полное решение. Я уверен, что вы поймете это, теперь вы знаете существующую проблему

kevinSpaceyIsKeyserSöze 30.03.2023 10:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
107
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете попробовать if (!a) {...}

!a дает true, когда a равно undefined, null или пусто.

Если вы находитесь в браузере, вы можете использовать console.info('[',a,']');, чтобы увидеть, какое значение имеет a.

!a дает false, даже если a пусто

rajiv gandhi 30.03.2023 08:50

@rajivgandhi Ты серьезно? Пожалуйста, попробуйте сами. "!" является сокращением от «не» (отрицание), и «не а» вернет истину, если значение «а» равно ложному, нулевому, неопределенному, 0 или '' (пустая строка)

Jadawin 30.03.2023 15:23

проблема в другом, поэтому ваш ответ не работает

kevinSpaceyIsKeyserSöze 31.03.2023 14:02

$(document).ready(function(){
  var a = $("#ControlWrapper").text();
  console.info(a);
  if (!a) {
    console.info("true value")
  } else {
    console.info("false value")
  }
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id = "ControlWrapper">
  <p></p>
  <p><br></p>
  <p></p>
</div>

Этот код точно выводит «ложное значение», поскольку внутри дочерних элементов узла HTML нет текста.

На мой взгляд, мы можем использовать метод trim() (для удаления пробелов), чтобы указать условный оператор javascript следующим образом:

myScripts.js и myDocument.html

  function getText() {
      var text = $('.element').text();
      if (text && text.trim() !== '') {
          console.info(text);
      } else {
          alert("Empty");
      }
  }
<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <meta http-equiv = "X-UA-Compatible" content = "IE=edge">
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>

    </style>

</head>
<body>
   
    <div class = "element" class = "element">
    </div>

    <button onClick = "getText()">
        Show Text 
    </button>
    
</body>
</html>

Другие вопросы по теме