02.06.2015, 19:13
|
Аспирант
|
|
Регистрация: 26.05.2015
Сообщений: 43
|
|
<html>
<head>
<meta charset="windows-1251" />
</head>
<body>
<div id="selects"></div>
<div id="out"></div>
<script>
SubObject={
clone: function(){
var o=Object.create(this)
if(this.init) this.init.call(o)
return o
},
extend: function(o){
for(var i in o) {if(!o.hasOwnProperty(i)) return this; this[i]=o[i]} return this
}
}
Select=SubObject.clone()
Select.extend({
init: function(){
this.self=document.createElement("select")
this.self.onchange=function(){this.setChild()}.bind(this)
this.parent=selects
},
append: function(){this.parent.appendChild(this.self); return this},
setChild: function(){
if(this.child) this.parent.removeChild(this.child.self)
this.child=Select.clone()
this.child.setValues(window[this.self.value])
this.child.self.onchange=function(){out.innerHTML=this.value}
this.child.self.onchange()
this.child.append()
return this
},
setValues: function(values){
for(var i in values) {
if(!(values.hasOwnProperty(i))) return this; this.self.appendChild(new Option(values[i], i))
}
return this
}
})
main={
hardDrive: "жесткий диск",
videoCard: "видеокарта",
audioCard: "аудиокарта"
}
hardDrive={
"$1": "отремонтировать XHard",
"$2": "отремонтировать YHard",
"$3": "отремонтировать ZHard",
}
videoCard={
"$10": "отремонтировать XVideo",
"$20": "отремонтировать YVideo",
"$30": "отремонтировать ZVideo",
}
audioCard={
"$100": "отремонтировать XAudio",
"$200": "отремонтировать YAudio",
"$300": "отремонтировать ZAudio",
}
select=Select.clone()
select
.setValues(main)
.append()
.setChild()
</script>
</body>
</html>
|
|
02.06.2015, 19:34
|
Интересующийся
|
|
Регистрация: 01.06.2015
Сообщений: 12
|
|
laimas,
Полностью согласен, но, это лендинг пэйдж и позиций всего 4 и должно быть всё быстро и динамично.
indeterm, Спасибо большое за готовое решение, буду теперь разбираться как это работает)
|
|
02.06.2015, 20:09
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Зависимые селекты ссылки по теме
|
|
02.06.2015, 21:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от bloodmoneys
|
Полностью согласен, но, это лендинг пэйдж и позиций всего 4 и должно быть всё быстро и динамично.
|
Да хоть сотня позиций, все равно будет динамично.
А вообще-то все это странно. Можно установить фиксированные цены за услуги, временные затраты на которые и расходные комплектующие заблаговременно известны. Иначе просто перечень услуг без цен. Ну к примеру, обращаются по причине отсутствия изображения на экране. Каким образом хозяин устройства не имеющий понятия в электронике может знать, что причиной служит видео карта, а не иное? А если, к примеру, взять ноутбук еще с подсветкой ламповой, то могут быть виновны и видео карта, и ВВ преобразователь, и лампа подсветки, а значит менять матрицу, и цены то у комплектующих разные.
В общем подозрительная контора получается.
|
|
02.06.2015, 21:48
|
Аспирант
|
|
Регистрация: 26.05.2015
Сообщений: 43
|
|
Сообщение от laimas
|
все равно будет динамично.
|
Динамично то будет(в смысле интерактивно), а вот то что быстро -- не факт. И сервак лишний раз без нужды дергать нах не вперлось.
|
|
02.06.2015, 21:53
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от indeterm
|
И сервак лишний раз без нужды дергать нах не вперлось.
|
Ну как говорил хозяин темы, всего четыре позиции, значит да, можно и с клиента получать. Но в случае расширения услуг, это уже не годится, перелопачивать придется весь код.
Получение списков адресов, это вообще тысячи записей, ну и не так долго ответ ждать приходится, да и мера эта вынужденная.
|
|
03.06.2015, 09:20
|
Интересующийся
|
|
Регистрация: 01.06.2015
Сообщений: 12
|
|
laimas,
Просто сама концепция лендинг пэйджа такая, что главное в нём это что-бы пользователь оставил заявку на консультацию. А в скрипте только явные позиции, а если нет такой позици, то вот пожалуйста вам кнопочка заявки консультации.
|
|
|
|