Подсчитайте, сколько раз строка текста появляется на странице с помощью Javascript

#javascript #html #count #word #onload

#javascript #HTML #подсчет #word #загрузка

Вопрос:

У меня есть представление в веб-приложении MVC, которое создает и представляет список стран и названия их столиц. Всякий раз, когда загружается представление, если результаты, представленные пользователю, содержат слова «Австралия» один или несколько раз, тогда я хочу, чтобы в нижней части экрана появлялось сообщение с надписью «Австралия включена в результаты». Я использовал следующий скрипт, но появляется сообщение о том, есть ли Австралия в результатах. У кого-нибудь есть какие-либо предложения?

  <script type='text/javascript'>
        if (
          (
            document.documentElement.textContent || document.documentElement.innerText
         ).indexOf('Australia') > -1
        ) {
            alert("Australia is included in the results");
        }
    </script>
 

Заранее спасибо

Комментарии:

1. поместите текст в переменную и посмотрите, что она содержит, с помощью отладчика. var text = document.documentElement.textContent || document.documentElement.innerText

Ответ №1:

Ваш код выглядит разумным, поэтому я подозреваю, что проблема в том, что он сам находит строку «Австралия» в коде!

Попробуйте поместить этот скрипт за пределы содержимого страницы (в отдельный файл .js) и посмотрите, сохраняется ли проблема.

Возможно 😉

Комментарии:

1. Я думаю, вы правы. Я использую этот скрипт для частичного просмотра. Знаете ли вы, включает ли document.documentElement.textContent все исходные представления, которые ведут к этому частичному представлению? Единственный способ, которым я могу заставить предупреждение исчезнуть, используя мой исходный код, — это установить (-1) в (1000). Я понятия не имею, почему это работает.

2. Забавная ошибка! document.documentElement.textContent извлекает все, что находится в документе во время его вызова, включая теги скриптов и их содержимое на странице. Попробуйте переместить свой скрипт со страницы (в файл javascript).

3. Кажется, вы немного знаете об этом, поэтому я подумал, что задам еще один вопрос — возможно ли просто заменить ‘alert’ на строку <div> . Формат («Австралия включена в результаты </ div> и должна отображаться внизу экрана в результатах?

Ответ №2:

Я думаю, что только этого условия может быть достаточно:

 if (document.documentElement.innerText.indexOf('Australia') > -1) {
    alert("Australia is included in the results");
}
 

http://jsfiddle.net/3gkzC/2/

Ответ №3:

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

То, что вы хотите, это document.getElementById("element_ID").innerHTML = "whatever";

Смотрите здесь: http://jsfiddle.net/UVU8w /