Выполнение части текста диапазона полужирным шрифтом не работает [дубликат]

React Native кнопки очень ограничены в опции, которую они предоставляют. Вы можете использовать TouchableHighlight или TouchableOpacity путем стилизации этого элемента и обертывания его кнопками с ним, как это

             
            

Вы также можете использовать библиотеку реакции для настраиваемая кнопка. Одна хорошая библиотека - это реакция-на-собственная кнопка ( https://www.npmjs.com/package/react-native-button )

250
задан Balaji Kandasamy 24 August 2013 в 13:17
поделиться

12 ответов

((пожалуйста, обновите, если это необходимо, этот ответ - Wiki))

Подзапрос: когда только текст, что быстрее, .text() или .html()?

Ответ: .html() быстрее! См. здесь «тест-набор поведения» для всего вопроса .

Итак, в заключение, если у вас есть «только текст», используйте метод html().

Примечание: Не имеет смысла? Помните, что функция .html() является только оболочкой для .innerHTML, но в функции .text() jQuery добавляет «фильтр сущности» , и этот фильтр естественно потребляет время.

< hr>

Хорошо, если вам действительно нужна производительность ... Используйте чистый Javascript для доступа к прямой текстовой замене с помощью свойства nodeValue. Выводы:

  • jQuery's .html() ~ 2x быстрее, чем .text().
  • pure JS '.innerHTML ~ ~ 3 раза быстрее, чем .html().
  • чистый JS '.nodeValue ~ 50x быстрее, чем .html(), ~ 100x, чем .text() и ~ 20x, чем .innerHTML.

PS: .textContent было введено с DOM-Level-3, .nodeValue является DOM-Level-2 и быстрее (!).

См. этот полный тест :

// Using jQuery:
simplecron.restart(); for (var i=1; i<3000; i++) 
    $("#work").html('BENCHMARK WORK');
var ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++) 
    $("#work").text('BENCHMARK WORK');
alert("JQuery (3000x): \nhtml="+ht+"\ntext="+simplecron.duration());

// Using pure JavaScript only:
simplecron.restart(); for (var i=1; i<3000; i++)
    document.getElementById('work').innerHTML = 'BENCHMARK WORK';
ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++) 
    document.getElementById('work').nodeValue = 'BENCHMARK WORK';
alert("Pure JS (3000x):\ninnerHTML="+ht+"\nnodeValue="+simplecron.duration());
99
ответ дан 7 revs, 4 users 77% 21 August 2018 в 16:57
поделиться
  • 1
    Но если вы имеете дело с ненадежным вводом, вы должны использовать текст (), когда это возможно. – Scott Simontis 31 August 2015 в 15:15
  • 2
    @ScottSimontis, когда вы устанавливаете свойство nodeValue, оно преобразует & quot; & gt; & quot; в & quot; & quot; & quot ;, & quot; и т.д. – Peter Krauss 31 August 2015 в 20:09
  • 3
    Когда I & quot; контрольный показатель & quot; с Chrome DevTools ( developer.chrome.com/devtools/docs/timeline ), результат противоположный (.text() кажется ~ 7x быстрее, чем .html()). Исходный код: codepen.io/damhonglinh/pen/vGpQEO . Я тестировал 1500 элементов; .html() занял ~ 220 мс, а .text() занял ~ 30 мс. – Linh Dam 8 April 2016 в 18:19
  • 4
    Привет @LinhDam. Hum ... используя полный тест , мой Firefox говорит «JQ TIMES (3000x): html = 82 text = 254», «JS TIMES (3000x): html = 15 text = 4» ... И мой Chrome говорит «JQ TIMES (3000x): html = 82 text = 202», «JS TIMES (3000x): html = 16 text = 0» .... так что оба (Firefox и Chrome) имеют те же временные отношения . – Peter Krauss 9 April 2016 в 19:15

Используйте .text (...), когда вы намереваетесь отображать это значение как простой текст.

Используйте .html (...), когда вы собираетесь отображать значение в виде текста в формате HTML (или содержимого HTML) ).

Вы обязательно должны использовать .text (...), когда не уверены, что ваш текст (например, входящий из элемента управления вводом) не содержит символов / тегов, которые имеют особое значение в HTML. Это действительно важно, потому что это может привести к тому, что текст не будет отображаться должным образом, но это также может привести к тому, что будет активирован нежелательный фрагмент сценария JS (например, исходящий от другого пользовательского ввода).

5
ответ дан Adorjan Princz 21 August 2018 в 16:57
поделиться

Первый пример фактически будет внедрять HTML внутри div, тогда как второй пример выйдет из текста, заменив связанные с элементом символы соответствующими символами символов , чтобы он отображался буквально (т. е. HTML будет отображаться не отображается).

63
ответ дан Andrew Hare 21 August 2018 в 16:57
поделиться
  • 1
    Извините, я не совсем понимаю. Не могли бы вы еще объяснить. благодаря – Brettk 15 December 2009 в 23:20
  • 2
    Что вы подразумеваете, что второй пример будет «закодировать»? Это уже кодировка, нет? – Brettk 15 December 2009 в 23:21
  • 3
    @Brettk - я сказал «кодировать». но это было скорее промахом пальцев. Я изменил свой ответ, чтобы лучше отразить то, что я имею в виду. – Andrew Hare 15 December 2009 в 23:22
  • 4
    Он означает, что в функции .text() все < будут заменены на &lt;. Таким образом, с .html() браузер увидит ссылку и полужирный текст, с .text() браузер увидит все как текст и не сделает ссылку или полужирный текст. – Mottie 15 December 2009 в 23:25

Я считаю, что разница заключается в том, чтобы вставить html-тег в text(), вы не используете html-тег

$('#output').html('You are registered'+'<br>'  +'  '
                     + 'Mister'+'  ' + name+'   ' + sourname ); }

:

You are registered <br> Mister name sourname

, заменив text() на html()

output

You are registered
Mister name sourname 

, тогда тег <br> работает в html()

0
ответ дан Benjamin 21 August 2018 в 16:57
поделиться
  • 1
    Исправьте свой ответ, первый фрагмент должен использовать text(). – MKaama 19 August 2017 в 08:54

Сущность метода text() - исключает любой HTML-код, который передается в него. Используйте text(), если вы хотите вставить HTML-код, который будет отображаться для людей, просматривающих страницу.

Технически ваш второй пример производит:

&lt;a href="example.html"&gt;Link&lt;/a&gt;&lt;b&gt;hello&lt;/b&gt;

, который будет отображаться в браузере как:

<a href="example.html">Link</a><b>hello</b>

Ваш первый пример будет отображаться как фактическая ссылка и некоторый жирный текст.

53
ответ дан davidcl 21 August 2018 в 16:57
поделиться
  • 1
    Это должно было быть включено в выбранный ответ, чтобы объяснить, что действительно происходит. – d512 28 February 2013 в 18:04

$ ('. div'). html (val) будет устанавливать значения HTML для всех выбранных элементов, $ ('. div'). text (val) установит текстовые значения всех выбранных элементов.

API docs для jQuery.text ()

API docs для jQuery.html ( )

Я бы предположил, что они соответствуют Node # textContent и Element # innerHTML соответственно. (Ссылки Gecko DOM).

1
ответ дан Michiel Kalkman 21 August 2018 в 16:57
поделиться

текстовая функция задана или получает значение в виде обычного текста, в противном случае функция HTML задает или извлекает значение в виде HTML-тегов для изменения или изменения этого. Если вы хотите просто изменить содержимое, используйте текст (). Но если вам нужно изменить разметку, вы должны использовать hmtl ().

Это фиктивный ответ для меня после шести лет, не против.

0
ответ дан Minhaz 21 August 2018 в 16:57
поделиться

Хорошо в простой перспективе.

html () - получить внутренний html (html-теги и текст).

text () - получить только текст, если он присутствует внутри (только текст)

1
ответ дан Must keem 21 August 2018 в 16:57
поделиться

Странно, что никто не упомянул преимущество предотвращения перекрестных ссылок для .text() по сравнению с .html() (Хотя другие только что упоминали, что .text() избегает данных).

Всегда рекомендуется использовать .text(), когда вы хотите обновлять данные в DOM, которые являются только данными / текстом для просмотра пользователем.

.html() в основном используется для получения содержимого HTML в div.

9
ответ дан Nisse Engström 21 August 2018 в 16:57
поделиться

Фактически оба выглядят несколько схожими, но сильно отличаются от вашего использования или намерения, чего вы хотите достичь,

Где использовать:

  • использовать .html() для работы с контейнерами с элементами html.
  • использовать .text() для изменения текста элементов, обычно имеющих отдельные открытые и закрывающие теги

Где не использовать:

  • .text() не может использоваться для ввода или сценариев формы. .val() для элементов ввода или textarea. .html() для значения элемента скрипта.
  • Получение html-содержимого из .text() преобразует html-теги в html-объекты.

Разница:

  • .text() может использоваться как в XML, так и в HTML-документах.
  • .html() предназначен только для html-документов.

Проверьте этот пример на jsfiddle, чтобы увидеть различия в действие

Пример

24
ответ дан Owais Qureshi 21 August 2018 в 16:57
поделиться

В принципе, $ ("# div"). html использует element.innerHTML для установки содержимого и $ ("# div"). text (возможно) использует element.textContent.

http://docs.jquery.com/Attributes/html :

Set the html contents of every matched element

http://docs.jquery.com/Attributes/text :

Similar to html(), but escapes HTML (replace "<" and ">" with their HTML 
entities).
2
ответ дан Seth 21 August 2018 в 16:57
поделиться

Я думаю, что разница почти не требует объяснений.

jQuery.html() рассматривает строку как HTML, jQuery.text() рассматривает содержимое как текст

<html>
<head>
  <title>Test Page</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type="text/javascript">
    $(function(){
      $("#div1").html('<a href="example.html">Link</a><b>hello</b>');
      $("#div2").text('<a href="example.html">Link</a><b>hello</b>');
    });
  </script>
</head>

<body>

<div id="div1"></div>
<div id="div2"></div>

</body>
</html>

$(function() {
  $("#div1").html('<a href="example.html">Link</a><b>hello</b>');
  $("#div2").text('<a href="example.html">Link</a><b>hello</b>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="div1"></div>
<div id="div2"></div>
Живая демонстрация на http://jsfiddle.net/hossain/sUTVg/

330
ответ дан Shubham Dhama 21 August 2018 в 16:57
поделиться
  • 1
    Если кому-то интересно проверить выше код - используйте jsfiddle.net/hossain/sUTVg :-) – Hossain Khan 5 December 2011 в 19:40
  • 2
    НО! обратите внимание ... Если вы используете .html (), любая строка с разметкой HTML будет отображаться как HTML, и любая строка с открытым текстом будет по-прежнему отображаться как обычный текст. В заключение вы можете часто использовать .html () как значение по умолчанию, ожидая, что будет изменено содержимое строки (с или без разметки). – aequalsb 15 March 2015 в 04:47
  • 3
    Следует также отметить, что длина между ними также различна. jsfiddle.net/sUTVg/458 – GreeKatrina 20 May 2015 в 16:50
  • 4
    @aequalsb Я понимаю, что это старый вопрос сейчас, но я должен заметить, что по умолчанию использование «.html ()» опасно из-за того, что текст обрабатывается как HTML. Если вы получите этот текст из параметра querystring, формы, заголовка, URL-адреса или любого другого места, где кто-то еще, чем вы можете предоставить или отредактировать текст, тогда вы широко открыты для XSS. – Canis 12 October 2017 в 18:35
  • 5
    @Cannis, я не думаю, что комментарий имеет значение - дискуссия о различиях между html() и text() - не лучшими методами безопасности - слишком широка - однако я отметил ваш комментарий в моей голове для будущая справка, если я когда-либо обнаруживаю, что соскабливаю контент от чего-то, не созданного мной – aequalsb 14 October 2017 в 12:53