Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Почему JS не срабатывает если параметр задан двуми словами? (https://javascript.ru/forum/css-html/18741-pochemu-js-ne-srabatyvaet-esli-parametr-zadan-dvumi-slovami.html)

Amateur 13.07.2011 16:42

Почему 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>

ksa 13.07.2011 16:53

Amateur, это вроде как даже не JS... А ты такое в "Javascript под браузер" разместил...

Sweet 13.07.2011 16:57

Потому что ключи объектов должны состоять из латинских букв, цифр и символов $ и _. Если есть другие символы, ключ нужно брать в кавычки:
var podcatArray = {
    *!*"*/!*<?php echo $SELL_CAT_SUNDRY;?>*!*"*/!* : {*!*"*/!*<?php echo $SELL_CAT_HOUSEWARE;?>*!*"*/!*:"<?php echo $SELL_CAT_HOUSEWARE;?>",

Amateur 13.07.2011 17:08

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>


остальное только для того, чтобы показать реализацию.

Amateur 13.07.2011 17:09

Sweet,
спасибо, работет

ksa 14.07.2011 09:48

Цитата:

Сообщение от Amateur
здесь основное это код

Цитата:

Сообщение от Amateur
Sweet,
спасибо, работет

Так не тот код главным оказался? :)


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