Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2011, 16:42
Аспирант
Отправить личное сообщение для Amateur Посмотреть профиль Найти все сообщения от Amateur
 
Регистрация: 07.03.2010
Сообщений: 88

Почему JS не срабатывает если параметр задан двуми словами?
Здравствуйте. Столкнулся с проблемой.
Проблема в том, что если
$SELL_CAT_HOUSEWARE = "Домашняя утварь";

то код не работает (не появляется подкатегория),
а если
$SELL_CAT_HOUSEWARE = "Домашняяутварь";

//если одним словом
то код работает.
Подскажите в чем ошибка и как ее можно исправить?

Код:

<?php
$SELL_CAT_SUNDRY = "Разное";
$SELL_CAT_HOUSEWARE = "Домашняя утварь"; 
$SELL_CAT_STATIONERY = "Канцтовары";
	?>

<script type="text/javascript">
var podcatArray = {
	<?php echo $SELL_CAT_SUNDRY;?> : {<?php echo $SELL_CAT_HOUSEWARE;?>:"<?php echo $SELL_CAT_HOUSEWARE;?>",<?php echo $SELL_CAT_STATIONERY ;?>:"<?php echo $SELL_CAT_STATIONERY ;?>"},
	ChevroletCorvette : {black:"Черный",blue:"Синий"},
	FerrariEnzo : {green:"Зеленый",black:"Черный",yellow:"Желтый"}
}

function getpodcat(_this){
	var podcat = podcatArray[_this.value];
	var _select = document.getElementById("podcat");
	_select.innerHTML = ""; // Удаляем всех потомков.
	for(var i in podcat){ // Добавляем доступные цвета.
		var option = document.createElement("option");
		var optionText = document.createTextNode(podcat[i]);
		option.appendChild(optionText);
		option.setAttribute("value",i);
		_select.appendChild(option);
	}
	_select.style.display="inline";
}
</script>
</head>
<body>
<form action="index.php" method="get">
<fieldset>
<legend><label for="models">Модели</label></legend>
<select id="cat" name="cat" onchange="getpodcat(this)">
<option value="<?php echo $SELL_CAT_SUNDRY;?>"><?php echo $SELL_CAT_SUNDRY;?></option>
	<option value="ChevroletCorvette">Chevrolet Corvette</option>
	<option value="FerrariEnzo">Ferrari Enzo</option>
</select>
</fieldset>
<fieldset>
<legend>
<label for="podcat">Подкатегория</label></legend>
<select id="podcat" name="podcat"></select>
</fieldset>
<fieldset>
	<input type="submit" value="Выбрать" />
</fieldset>
</form>

Последний раз редактировалось Amateur, 13.07.2011 в 16:44.
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2011, 16:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,109

Amateur, это вроде как даже не JS... А ты такое в "Javascript под браузер" разместил...
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2011, 16:57
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Потому что ключи объектов должны состоять из латинских букв, цифр и символов $ и _. Если есть другие символы, ключ нужно брать в кавычки:
var podcatArray = {
    *!*"*/!*<?php echo $SELL_CAT_SUNDRY;?>*!*"*/!* : {*!*"*/!*<?php echo $SELL_CAT_HOUSEWARE;?>*!*"*/!*:"<?php echo $SELL_CAT_HOUSEWARE;?>",
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2011, 17:08
Аспирант
Отправить личное сообщение для Amateur Посмотреть профиль Найти все сообщения от Amateur
 
Регистрация: 07.03.2010
Сообщений: 88

ksa,
здесь основное это код
<script type="text/javascript">
// Данные, как бы из базы, сформированные на стороне сервера.
// Обычно находятся в подключаемом JavaScript файле.
var colorsArray = {
	BentleyAzure : {red:"Красный",green:"Зеленый"},
	ChevroletCorvette : {black:"Черный",blue:"Синий"},
	FerrariEnzo : {green:"Зеленый",black:"Черный",yellow:"Желтый"}
}
// Функция, заполняющая список цветами доступными для выбранной модели.
function getColors(_this){
	var colors = colorsArray[_this.value];
	var _select = document.getElementById("colors");
	_select.innerHTML = ""; // Удаляем всех потомков.
	for(var i in colors){ // Добавляем доступные цвета.
		var option = document.createElement("option");
		var optionText = document.createTextNode(colors[i]);
		option.appendChild(optionText);
		option.setAttribute("value",i);
		_select.appendChild(option);
	}
	// Делаем список цветов видимым.
	_select.style.display="inline";
}
</script>


остальное только для того, чтобы показать реализацию.
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2011, 17:09
Аспирант
Отправить личное сообщение для Amateur Посмотреть профиль Найти все сообщения от Amateur
 
Регистрация: 07.03.2010
Сообщений: 88

Sweet,
спасибо, работет
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2011, 09:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,109

Сообщение от Amateur
здесь основное это код
Сообщение от Amateur
Sweet,
спасибо, работет
Так не тот код главным оказался?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт работает только если подключать js в самом низу html! Pekkonen jQuery 3 26.01.2011 01:44
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41