Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   изменение значения глобальной переменной внутри функции (https://javascript.ru/forum/server/21488-izmenenie-znacheniya-globalnojj-peremennojj-vnutri-funkcii.html)

mgmarket 12.09.2011 14:49

Цитата:

Сообщение от Триви (Сообщение 126090)
Ты уверен? :no: :haha:

Триви, можешь просто правильное решение написать, я все-равно сам боюсь не дойду...

walik 12.09.2011 15:38

Попробуйте:
<html>
<head>
<script src="script.js"></script>
<script>
count(<?php echo $perf?>);
alert(countOfFields);
</script>
</head>
</html>

В начале подключаете файл, а потом вызываете функцию. + в самом файле не надо вызывать функцию, только тут.

mgmarket 12.09.2011 18:27

Цитата:

Сообщение от walik (Сообщение 126120)
Попробуйте:
<html>
<head>
<script src="script.js"></script>
<script>
count(<?php echo $perf?>);
alert(countOfFields);
</script>
</head>
</html>

В начале подключаете файл, а потом вызываете функцию. + в самом файле не надо вызывать функцию, только тут.

не работает. Может по другому посмотрите. Мне нужна эта глобальная переменная чтобы выполнялся другой код, изменить его мне знаний не хватает, но смысл в том, что от значения этой глобальной переменной зависит количество добавляемых полей. Допустим есть уже два поля и тогда к ним нужно добавить только 3, соответственно в этой переменной должна быть цифра 2. Если будет 0, как есть по умолчанию, то скрипт добавляет 5 полей а это уже 7, что быть не должно. Вот сам код:
var countOfFields=0; // Текущее число полей
var curFieldNameId = 0; // Уникальное значение для атрибута name
var maxFieldLimit = 5; // Максимальное число возможных полей
function deleteField(a)
{
	// Получаем доступ к ДИВу, содержащему поле
	var contDiv = a.parentNode;
	// Удаляем этот ДИВ из DOM-дерева
	contDiv.parentNode.removeChild(contDiv);
	// Уменьшаем значение текущего числа полей
	countOfFields--;
	// Возвращаем false, чтобы не было перехода по сслыке
	return false;
}

function addField()
{
	// Проверяем, не достигло ли число полей максимума
	if (countOfFields >= maxFieldLimit)
	{
		alert("Число полей достигло своего максимума = " + maxFieldLimit);
		return false;
	}
	// Увеличиваем текущее значение числа полей
	countOfFields++;
	// Увеличиваем ID
	curFieldNameId++;
	alert(curFieldNameId);
	// Создаем элемент ДИВ
	var div = document.createElement("div");
	// Добавляем HTML-контент с пом. свойства innerHTML
	div.innerHTML = "<input name=\"name_" + curFieldNameId + "\" type=\"text\" size=\"3\" value=\"\">% <a onclick=\"return deleteField(this)\" href=\"#\">[X]</a>";
	// Добавляем новый узел в конец списка полей
	document.getElementById("parentId").appendChild(div);
	// Возвращаем false, чтобы не было перехода по сслыке
	return false;
}

Триви 12.09.2011 19:03

Код абсолютно рабочий.
У тебя основной файл на серваке .php?
Что тебе мешает присвоить JS-переменной countOfFields значение php-переменной $perf ?

var countOfFields=<?=$perf?>;


Ну не генерится же у тебя с помощью php подключаемый js-файл в котором передается это значение?!
Это ж глупость какая то..

mgmarket 13.09.2011 00:56

Решил проблему топором: скрипт из подключаемого файла тупо воткнул в код php, и присвоил переменной значение, все заработало :(
Всем спасибо за помощь.


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