Показать сообщение отдельно
  #11 (permalink)  
Старый 02.06.2015, 19:13
Аспирант
Отправить личное сообщение для indeterm Посмотреть профиль Найти все сообщения от indeterm
 
Регистрация: 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>
Ответить с цитированием