Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.02.2014, 15:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kos403
Если функция находит нужную строка она переходит по метке и возвращает результат
Нифига не понял. Зачем там метка? Покажи конечный код. И ответь на остальные вопросы пожалуйста. Ты некоторые пропустил.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #12 (permalink)  
Старый 12.02.2014, 21:11
Интересующийся
Отправить личное сообщение для kos403 Посмотреть профиль Найти все сообщения от kos403
 
Регистрация: 12.02.2014
Сообщений: 14

this.show_Comment = function(from, to){
							var mass_of_all_nodes = 0;
							var length_of_the_collection_of_node = 0;
							
							mass_of_all_nodes = document.body.childNodes;
							length_of_the_collection_of_node = mass_of_all_nodes.length;
								
								for(var i = 0;i < length_of_the_collection_of_node;i++){
										
										if(mass_of_all_nodes[i].nodeType == 8 && mass_of_all_nodes[i].nodeName == "#comment"){
												if(mass_of_all_nodes[i].data.indexOf(from) != '-1' || mass_of_all_nodes[i].nodeValue.indexOf(from) != '-1'){
														
														var from_where = 0;
														var when_stopd = 0;		
														var string_of_data = '';	
														
														from_where = mass_of_all_nodes[i].data.indexOf(from);
														when_stopd = (mass_of_all_nodes[i].data.indexOf(to) + 3);
														
														for(var j = from_where;j < when_stopd;j++){
																string_of_data += mass_of_all_nodes[i].data.charAt(j);			
															}
														
														alert(string_of_data + ' was found in body');	
														return;	
													}
											}		
									} 	
}

Конечная функция получилась вот такой!
где я такое увидел, да видел у некоторых прогеров, которые на С писали, но сам думаю что так и себе понятней и человеку который будет после тебя.
С какой я планеты, да вроде с этой, хотя хз
Ответить с цитированием
  #13 (permalink)  
Старый 12.02.2014, 21:13
Интересующийся
Отправить личное сообщение для kos403 Посмотреть профиль Найти все сообщения от kos403
 
Регистрация: 12.02.2014
Сообщений: 14

ну а метка там нужны была для того, что бы если функция успешно завершилась, то есть нашла строку - программа обходила блок с сообщением что ничего не найдено.
Ответить с цитированием
  #14 (permalink)  
Старый 13.02.2014, 08:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Соблюдать надо правила именования того языка, на котором ты пишешь, а не который ты где-то когда-то видел. Тем более если твой код увидит кто-то кроме тебя.
Зачем ты инициализируешь переменные сначала нулями, а потом тутже присваиваешь им новые значения?

Опять же я не понял про nodeValue и nodeName.
Если доступаешься к элементу массива много раз, то почему бы не вынести элемент в переменную?

А вот это:
Сообщение от kos403
                                                          for(var j = from_where;j < when_stopd;j++){
                                                                  string_of_data += mass_of_all_nodes[i].data.charAt(j);         
                                                              }
- вобще пипец. Так на JS не делается. Все гораздо проще (и работать будет быстрее).

Вложенные if'ы - тоже зло. В каком-то проекте крупном, не помню, даже патч не примут если есть три вложенных if'a.

Вот мой вариант (примерно так же напишет любой js-прогер с планеты земля):
this.showComment = function(prefix, suffix) {
    var nodes = document.body.childNodes;
    for (var i = 0; i < nodes.length; i++) {
        var node = nodes[i];
        if (node.nodeType !== node.COMMENT_NODE)
            continue;
        var prefixIndex = node.data.indexOf(prefix);
        if (prefixIndex < 0)
            continue;
        var suffixIndex = node.data.indexOf(suffix);
        var data = node.data.substring(prefixIndex, suffixIndex + 3);
        return alert(data + ' was found in body');
    }
};


Чей на твой взгляд читабельней?
nodes.length не вижу смысла кэшировать.
Если нужна поддержка IE8, то тебе придется самому определить константу COMMENT_NODE.
Откуда число + 3? Че за магия?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #15 (permalink)  
Старый 16.02.2014, 02:38
Интересующийся
Отправить личное сообщение для kos403 Посмотреть профиль Найти все сообщения от kos403
 
Регистрация: 12.02.2014
Сообщений: 14

danik.js danik спасибо буду мотать на ус, ещё многому предстоит научиться)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить порядковый номер узла дерева относительно корня Shamandrey ExtJS 2 11.11.2013 10:48
Динамическое отображение содержимого серверного файла на странице Voronar AJAX и COMET 29 25.02.2013 15:39
Вывод содержимого текстового поля по onChange Ilyich Events/DOM/Window 2 08.06.2011 18:37
Получение текстового содержимого из всех вложенных DOM EmDmAl Events/DOM/Window 8 02.12.2009 23:38
Частичное изменение содержимого элемента kuhok Events/DOM/Window 28 07.09.2009 22:44