| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Найти текст внутри div-a |
| Автор: Sunvas 16.5.2007, 23:07 | ||
Есть <div class="divclass" id='dicid'>{какой-то текст}</div>. Нужно написать функцию которая определяла бы есть ли заданый текст внутри div-a или нет. Если есть - вернуть его позицию, если нет - вернуть 0. Желательно кроссбраузерность.
|
| Автор: Burrr 16.5.2007, 23:41 | ||
Проверил в ИЕ6, ФФ1.5 и Опера 9.01 |
| Автор: Stampede 17.5.2007, 00:03 |
| Burrr, ты зря воспринял "спецификацию заказчика" слишком близко к сердцу. Он просто не подумал, что позиция найденного текста может быть нулевой. Как он в таком случае будет определять, вернули ли ему ноль потому что строка не найдена, или потому что она стоит в самом начале? В итоге ты написал функцию, с которой неизвестно как работать, да еще к тому же дважды вычисляешь indexOf() в случае нахождения строки. Мораль: никогда не принимайте требования заказчика за чистую монету. Чаще всего они сами не представляют, чего хотят. Добивайтесь от них, чтоб было как в анекдоте: "ты не умничай, ты пальцем покажи" |
| Автор: Burrr 17.5.2007, 00:18 |
| На основании этого кода всё доработать можно легко, основное и так понятно. Stampede, почему неизвестно как? Что хотели, то и получили. Если хотим, можем получать просто return divText.indexOf(text); А от 2-х вызовов indexOf еще никто не умирал ;) Но за совет спасибо, то что я пропустил возврат нулевой позиции однозначно косяк. |
| Автор: Stampede 17.5.2007, 00:40 |
| Мой пойнт был: из функции возвращать непосредственно результат divText.indexOf(text), а Sunvas'у объяснить в популярной форме, что это для его же блага А вот это уже отнюдь не безобидное заявление. Тут уже пахнет мировоззренческими разногласиями. И я прямо скажу: с таким подходом недолго и прокидаться. Безо всяких смайлов. Так что предлагаю задуматься. |
| Автор: Burrr 17.5.2007, 09:53 | ||||
Sunvas, да, в JavaScript первое вхождение стоящее в начале строки имеет нулевую позицию, поэтому лучше юзай такой вариант:
Если нода пустая или совпадений нет, то вернется -1. Если совпадение есть, то вернется его позиция. Stampede, к таким вещам надо относится проще и дело не в мировозрении. При написании той строки я выбирал между двумя вариантами:
И выбрал первый, чтобы не плодить лишнюю строчку кода, т.к. на скорость работы скрипта вычисление 2-х indexOf особо не влияет. Вообщем-то совсем не влияет. Если бы вместо indexOf стоял стояла функция или более медленные вычесления, был бы выбран второй вариант написания. Всё. |