Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает счетчик :( (https://javascript.ru/forum/misc/70116-ne-rabotaet-schetchik.html)

Zmicer 11.08.2017 15:25

Не работает счетчик :(
 
Доброго времени суток! Хочу спросить, если кто нибудь в курсе - написал функцию (несколько громоздкую, но не в этом суть), которая должна по нажатию на кнопку делать <p> красными, по второму - черными. Однако не могу понять, почему этого не происходит, хотя я задаю глобальную переменную count - по идее все должно работать как часы
function selectAllp() {
	if (count === null) var count =1;	            
	if (count%2 !== 0){var pList = document.getElementsByTagName("p");
           	for (var i = 0; i < pList.length; i++) {
                pList[i].setAttribute("style", "color:red");
				            }  
			count=2;
			return				
		}
		
	else if (count%2 == 0){var pList = 
               document.getElementsByTagName("p");
           	for (var i = 0; i < pList.length; i++) {
             pList[i].setAttribute("style", "color:black");
		 } 			 
	}
		   count=1;	  
   }
.

Спасибо за ответ!

ksa 11.08.2017 15:39

Цитата:

Сообщение от Zmicer
хотя я задаю глобальную переменную count - по идее все должно работать как часы

Если не работает - значит не должно. ;)

ksa 11.08.2017 15:40

Цитата:

Сообщение от Zmicer
должна по нажатию на кнопку делать <p> красными, по второму - черными

Ты полный пример сделай дабы посмотреть все сразу...

ksa 11.08.2017 15:42

Цитата:

Сообщение от Zmicer
хотя я задаю глобальную переменную count

Какая же она глобальная, если у тебя
Цитата:

Сообщение от Zmicer
if (count === null) *!*var count =1*/!*;


ksa 11.08.2017 15:43

Цитата:

Сообщение от Zmicer
pList[i].setAttribute("style", "color:red")

Меняй на
pList[i].style.color='red';

Zmicer 11.08.2017 15:47

ну дальше то идет - count=2 (т.е. глобальная). Даю весь код:
<html>
<head>
   <title>Count</title>
</head>

<body>

<script type="text/javascript">

function selectAllp() {
			if (count === null) var count =1;			      
			if (count%2 !== 0){var pList = document.getElementsByTagName("p");
           	for (var i = 0; i < pList.length; i++) {
                pList[i].setAttribute("style", "color:red");
			}  
			count=2;
			return				
		}
		    else if (count%2 == 0){var pList = document.getElementsByTagName("p");
           	for (var i = 0; i < pList.length; i++) {
             pList[i].setAttribute("style", "color:black");
				 } 			 
		}
		   count=1;	   		   
		   }
       
</script>

<p>Привет, медвед0!</p>
<p>Привет, медвед1!</p>
<p>Привет, медвед2!</p>
<p>Привет, медвед3!</p>

<input type="button" onclick="selectAllp()" style="width: 210px;" value="Выбрать все параграфы" />

</body>
</html>

Alexandroppolus 11.08.2017 15:54

Цитата:

Сообщение от Zmicer
if (count === null) var count =1; 

почему-то вспомнилось, как на собеседовании меня спросили, что-то вроде: как тут будет работать?
if (...) {
  function f() { return true; } 
} else {
  function f() { return false; } 
}
...


не люблю такие вопросы - они унылы...

j0hnik 11.08.2017 15:55

var count =1; поставь перед функцией
function selectAllp() {

j0hnik 11.08.2017 15:58

var count =1 / у тебя каждый раз заново объявляется и ей присваивается значение 1

ksa 11.08.2017 15:58

Цитата:

Сообщение от Zmicer
Даю весь код

И я... :)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var count=false;	   		   
function selectAllp() {
	var clr=(count)? 'black': 'red';
	var pList = document.getElementsByTagName("p");
	for (var i = 0; i < pList.length; i++) {
		pList[i].style.color=clr;
	}  
	count=!count;
}
</script>
</head>
<body>
<p>Привет, медвед0!</p>
<p>Привет, медвед1!</p>
<p>Привет, медвед2!</p>
<p>Привет, медвед3!</p>
<input type="button" onclick="selectAllp()" style="width: 210px;" value="Выбрать все параграфы" />
</body>
</html>


Часовой пояс GMT +3, время: 08:32.