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 в условном выражении, но, к сожалению, это не работает.
Мне нужно сравнить текст, когда внутри элемента нет текста.
И можете ли вы предоставить минимальный воспроизводимый пример, пожалуйста
if (!a) { console.info("истинное значение") }else { console.info("ложное значение") }
В вашем примере внутри абзацев есть невидимые символы (нулевой ширины). Так что они не пустые.
@TiiJ7 TiiJ7, как удалить эти пробелы нулевой ширины. Есть идеи
Вы можете заменить все символы, которые не являются текстом, регулярным выражением a.replace(/[^a-zA-Z]+/g, '') == ""
, это удалит все специальные символы.
@kevinSpaceyIsKeyserSöze спасибо за помощь. но регулярное выражение должно позволять звуку не заменять числа и специальные символы
когда текста нет - скопируйте и вставьте ваш код в редактор - ваш текст не будет пустым. Удаление символов \u200b
и обрезка() не поможет, так как ваш HTML содержит новые строки, которые включены в .text(). Самое простое решение — не включать \u200b
в свой вывод. Но .text() по-прежнему дает пробелы и новые строки, которые можно обрезать(). Если это не вариант, используйте: .text().replace(/\u200b/g, "").trim()
хотя вы, вероятно, получите другие «специальные символы» в какой-то момент.
Это просто предупреждение, а не полное решение. Я уверен, что вы поймете это, теперь вы знаете существующую проблему
Вы можете попробовать if (!a) {...}
!a
дает true
, когда a
равно undefined
, null
или пусто.
Если вы находитесь в браузере, вы можете использовать console.info('[',a,']');
, чтобы увидеть, какое значение имеет a
.
!a дает false, даже если a пусто
@rajivgandhi Ты серьезно? Пожалуйста, попробуйте сами. "!" является сокращением от «не» (отрицание), и «не а» вернет истину, если значение «а» равно ложному, нулевому, неопределенному, 0 или '' (пустая строка)
проблема в другом, поэтому ваш ответ не работает
$(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>
Есть опечатка, так как тег id не закрывается конечным знаком
"