Показать сообщение отдельно
  #1 (permalink)  
Старый 19.09.2009, 15:57
harryer
 
Сообщений: n/a

доработать скрипт под IE 8
С javascript раньше никогда не связывался. только с html и php. А тут "кровь из носу" нужно человеку динамическую ссылку к завтрашнему дню. И человек такой, что отказать нельзя. Кое как нашел и "впаял" готовый скриптик динамической ссылки. Протестил на опере, моззиле, и IE 6 - ничтяк. Уже было расслабился, но у этого человека IE 8, а там ссылка не пашет совсем. вот проблемная часть скрипта. Если кто может реально помочь, очень прошу. (только умоляю, не нужно советов, вроде "почитай учебник по js" до завтра мне не успеть найти в учебниках нужное и рвать меня будут неподецки.)
</HEAD>
<BODY>
	
	<SCRIPT type="text/javascript">
  function syncList()
 {
 }
  
 //Метод sync() - принимает список из значений атрибутов id элементов SELECT, образующих связанный список и запускает их синхронизацию
 syncList.prototype.sync = function()
 {
     //Перебираем аргументы (id элементов SELECT) и назначаем событиям onChange селектов, с соответствующими id, функцию-обработчик. 
     //В качестве обработчика выступает второй метод объекта syncList - _sync (напрямую его вызывать не нужно) 
     //Обработчик назначается всем элементам SELECT кроме последнего в списке аргументов, т.к. последний не влияет ни на какой другой элемент SELECT и с ним не нужно синхронизироваться.
     for (var i=0; i < arguments.length-1; i++)    document.getElementById(arguments[i]).onchange = (function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, arguments[i], arguments[i+1]);
     document.getElementById(arguments[0]).onchange();//запускаем обработчик onchange первого селекта, чтобы при загрузке страницы заполнить дочерние селекты значениями.
 }
 //служебный метод _sync - срабатывает при смене выбранного элемента в текущем (старшем) элементе SELECT (по его событию onChange) и изменяет содержимое зависимого селекта на основании значения выбранного в старшем селекте.
 syncList.prototype._sync = function (firstSelectId, secondSelectId)
 {
     var firstSelect = document.getElementById(firstSelectId);
     var secondSelect = document.getElementById(secondSelectId);
  
     secondSelect.length = 0; //обнуляем второй (подчиненный) SELECT
     
     if (firstSelect.length>0)//если первый (старший) SELECT не пуст
     {
         //из свойства dataList, с данными для заполнения подчиненных селектов, берем ту часть данных, которая соответствует именно значению элемента, 
         //выбранного в первом селекте, и определяет содержимое подчиненного элемента SELECT.
         var optionValue = firstSelect.options[ firstSelect.selectedIndex==-1 ? 0 : firstSelect.selectedIndex].value; var optionData = this.dataList[optionValue]; if (!optionData) optionData = this.dataList[parseInt(optionValue)];
         //заполняем второй (подчиненный) селект значениями (создаем элементы option)
         for (var key in optionData || null) secondSelect.options[secondSelect.length] = new Option(optionData[key], key);
         
         //если в старшем SELECT-е нет выделенного пункта, выделяем первый
         if (firstSelect.selectedIndex == -1) setTimeout( function(){ firstSelect.options[0].selected = true;}, 1 );
         //если во втором списке нет выделенного пункта, выделяем первый его пункт
         if (secondSelect.length>0) setTimeout( function(){ secondSelect.options[0].selected = true;}, 1 );
     }
     //если второй (подчиненный) селект имеет в свою очередь свои подчиненные селекты (те, для которых он главный), 
     //то запускаем его обработчик onchange, чтобы изменить его подчиненные селекты
     secondSelect.onchange && secondSelect.onchange();
 };
 </SCRIPT>
		<span style=\"color: white; font: bold 15px georgia; \">	
 <form action="index.php" method="post">
 <select size="1" id="action" name="action">
 <option value="no_action">все марки</option>
 <option value="ALFA ROMEO">ALFA ROMEO</option>
 <option value="AUDI">AUDI</option>
 <option value="BMW">BMW</option>
 <option value="CHEVROLET">CHEVROLET</option>
 <option value="CHRYSLER">CHRYSLER</option>
 <option value="CITROEN">CITROEN</option>
 <option value="DAEWOO">DAEWOO</option>
 <option value="DAIHATSU">DAIHATSU</option>
 <option value="DODGE">DODGE</option>
 <option value="FIAT">FIAT</option>
 <option value="FORD">FORD</option>
 <option value="HINO">HINO</option>
 <option value="HONDA">HONDA</option>
 <option value="HYUNDAI">HYUNDAI</option>
 <option value="ISUZU">ISUZU</option>
 <option value="JEEP">JEEP</option>
 <option value="KIA">KIA</option>
 <option value="MAZDA">MAZDA</option>
 <option value="MERCEDES BENZ">MERCEDES BENZ</option>
 <option value="MITSUBISHI">MITSUBISHI</option>
 <option value="NISSAN">NISSAN</option>
 <option value="OPEL">OPEL</option>
 <option value="PEUGEOT">PEUGEOT</option>
 <option value="RENAULT">RENAULT</option>
 <option value="SAAB">SAAB</option>
 <option value="SKODA">SKODA</option>
 <option value="SUBARU">SUBARU</option>
 <option value="SUZUKI">SUZUKI</option>
 <option value="TOYOTA">TOYOTA</option>
 <option value="VOLKSWAGEN">VOLKSWAGEN</option>
 <option value="VOLVO">VOLVO</option>
 
 </select>
 <select size="1" ID="ok" name="ok"></select>
Ответить с цитированием