 
			
				31.08.2016, 14:07
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.07.2013 
					
					
					
						Сообщений: 30
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				удаление элементов с условием
			 
			
		
		
		
		Есть условие, необходимо удалять элементы порядковый номер которых делится на 4 с остатком 3. 
http://jsbin.com/roneqax/edit?html,js,console,output
я написал код, он должен удалить 3 и 7 элемент по идее, он так и делает, но не совсем правильно, он удаляет 3 элемент, а 7 у нас смещается на строку 6 и получается так что он удаляет совсем другой уже элемент. Я создал переменную step, думал буду фиксировать случай когда удаляется элемент и делать инкремент переменной step, для того чтобы она элемент брала правильно, но что-то не помогло, может кто нибудь подскажет как решить проблему?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 14:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Массив элеметов то модифицируется, а значит и итерация будет указывать совсем не на то. Если так удалять, тогда с конца: 
for(var i = elements.length; i; i--){
  if(i % 4 == 3) elements[i].parentNode.removeChild(elements[i]);
}
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 31.08.2016 в 14:39.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 14:35
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.07.2013 
					
					
					
						Сообщений: 30
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 laimas, да, то что нужно, спасибо. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 15:07
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.07.2013 
					
					
					
						Сообщений: 30
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		laimas, 
 не подскажешь что в этом коде не правильно написано?  https://jsfiddle.net/oq60k25k/1/
делаю проверку, имеется ли в элементе строка "question more" если да, заменить ее на "<a href=\"http://example.com\">It's</a> question more" тоесть, добавить ссылку и текст, создал отдельно переменную и редактировал ее, вроде норм, а цикле попробовал не работает.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 15:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 match вернет null, если сопоставлений не будет, то есть   
if(elements[i].textContent.match( /question more/gi)) и хватит. 
Но в данном случае этой проверки вообще не нужно, и сразу 
elements[i].textContent.replace(/question more/g, "<a href=\"http://example.com\">It's</a> question more" ); 
Будет найдено, значит будет заменено, а нет, значит нет. Но, по идее ваш код должен порождать ошибку - elements[i] is undefined. Проверьте. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 17:58
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.07.2013 
					
					
					
						Сообщений: 30
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Cannot read property 'textContent' of undefined 
 
не может прочитать textContent, в чем проблема может быть? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 18:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 if(i % 4 == 3) elements[i].parentNode.removeChild(elements[i - 1]); 
а 
elements[i].textContent.replace(/question more/g, "<a href=\"http://example.com\">It's</a> question more" ); 
а начало цикла равно elements.length. 
 
Что вы хотите сделать? Нет элемента с индексом elements.length, а значит будет ошибка. А вот элемент с индексом i - 1 будет, но если elements[i-1].textContent, то в чем требуется замена? 
 
Разберитесь какой индекс нужен и ошибок не будет. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 18:25
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.09.2015 
					
					
					
						Сообщений: 196
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		moslem, здравствуйте.
 
	
 
	
		
			Сообщение от moslem
			 
		
	 | 
 
	
		Cannot read property 'textContent' of undefined 
 
не может прочитать textContent, в чем проблема может быть?
	 | 
 
	
 
 в том, что нет такого элемента 
for( var i = elements.length; i; i--){ 
на первом же шаге пытаетесь обработать несуществующий элемент 
Далее, Вы удаляете, например, 19-й элемент, а потом пытаетесь что-то с ним сделать, это тоже неправильно. 
Вот так работает:
 
<script>
window.onload = function(){
var elements = document.getElementsByTagName('li');
for(var i = elements.length-1; i; i--){
  if(i % 4 == 3) {
  	elements[i].parentNode.removeChild(elements[i]);
  }else{
    elements[i].innerHTML = elements[i].textContent.replace(/question more/g, "<a href=\"http://example.com\">It's</a> question more" );
  }
}   
}
</script>
  <ul>
  <li>Element 1</li>
  <li>Element 2</li>
  <li>Element 3</li>
  <li>Element 4</li>
  <li>Element 5 question more</li>
  <li>Element 6</li>
  <li>Element 7</li>
  <li>at fugit neque magnam</li>
  <li>Element 9</li>
  <li>Element 10</li>
  <li>Element 11</li>
  <li>Element 12</li>
  <li>Element 13 question more</li>
    <li>Element 14</li>
  <li>Element 15</li>
  <li>Element 16</li>
  <li>Element 17</li>
    <li>Element 18</li>
  <li>Element 19 question more</li>
  <li>Element 20</li>
  <li>Element 21 question more</li>
    <li>Element 22</li>
  <li>Element 23</li>
  <li>Element 24</li>
  </ul>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Manyasha, 31.08.2016 в 18:30.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 18:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.09.2015 
					
					
					
						Сообщений: 196
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		laimas, опередили меня    
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	| 
		if(i % 4 == 3) elements[i].parentNode.removeChild(elements[i - 1]);
	 | 
 
	
 
 что-то я это упустила... Исправила в своем предыдущем посте.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.08.2016, 19:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Manyasha
			
		
	 | 
 
	| 
		опередили меня
	 | 
 
	
 
 нечаянно получилось. )  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |