2015-04-06 4 views
1

у меня есть проблемы с этим кодом:Javascript выбрать случайный вариант

HTML:

<div class="select"> 
    <select name="ipd" id="ipd"> 
     <option value="1">192.168.2.1</option> 
     <option value="2">192.168.2.2</option> 
     <option value="3">192.168.2.3</option> 
     <option value="4">192.168.2.4</option> 
     <option value="5">192.168.2.5</option> 
    </select> 
    <a href="#" onclick="myfunction()">Select random</a> 
</div> 

И JavaScript:

<script type="text/javascript"> 
function myfunction() { 
    var select = document.getElementById('ipd'); 
    var items = select.getElementsByTagName('option'); 
    var index = Math.floor(Math.random() * items.length); 

    select.selectedIndex = index; 
} 
</script> 

Когда я удалить функцию строки из JS и сделал код для запуска после загрузки сайта, он работает нормально. Но когда я пытаюсь использовать его в нем, это не сработает. Может кто-нибудь объяснить мне почему? Я пытаюсь немного отладить это и добавить функцию (индекс) к функции, и это верный правильный случайный индекс, но он ничего не выбирает.

+2

http://jsfiddle.net/n7k63smf/, кажется, работает нормально – smerny

+0

вы просто хотите убедитесь, что ваша функция доступна, когда dom создан ... в приведенном выше jsfiddle ваша функция помещается в голову. – smerny

+0

Хм .. это выглядит не работает в моей теме html. Но код для этого то же самое в голове. – Lukasin

ответ

0

Ваш код работает нормально ... пока он запущен до создания DOM.

JSFiddle


Если ваш скрипт получает побежал после того, как DOM будет создан, и вы не можете изменить, что по какой-то причине ... вы можете удалить OnClick в DOM, добавить ID на связать и сделать это таким образом, вместо этого:

JSFiddle

document.getElementById("randomSelect").addEventListener("click", function() { 
    var select = document.getElementById('ipd'); 
    var items = select.getElementsByTagName('option'); 
    var index = Math.floor(Math.random() * items.length); 
    select.selectedIndex = index; 
}); 

Кроме того, я заметил, что ты меченый JQuery, вы можете также использовать это ...

JSFiddle

$(document).ready(function() { 
    $("#randomSelect").click(function() { 
     var select = document.getElementById('ipd'); 
     var items = select.getElementsByTagName('option'); 
     var index = Math.floor(Math.random() * items.length); 
     select.selectedIndex = index; 
    }); 
}); 
+0

Спасибо, но он по-прежнему не работает в моей теме. Я поставил код JS/jQuery в голову и поместил код в некоторые div, проверил, что id = ipd нигде не используется, и все равно ничего. Когда я перемещаю select из divs, он работает нормально. Вы знаете, что может сделать эти проблемы? – Lukasin

+0

Хорошо, я что-то нашел. У меня есть два js-скрипта, добавленных в голову, которые меняют стиль выбора. Когда я удаляю его, он отлично работает, но почему он не работает с ним? URLS: http://pastebin.com/JckCSKpK и http://pastebin.com/UU6Qtkgu – Lukasin

0

При нажатии ссылки вы будете перезагружены, а также html. Таким образом, все изменения в доме будут потеряны. Вам нужно остановить загрузку страницы, вернув false.

<script type="text/javascript"> 
function myfunction() { 
var select = document.getElementById('ipd'); 
var items = select.getElementsByTagName('option'); 
var index = Math.floor(Math.random() * items.length); 

select.selectedIndex = index; 
return false; 
} 
</script> 
+0

с 'href =" # "' он не перезагрузит страницу. – smerny

+0

Спасибо, но он все еще не работает. Это работает только тогда, когда я помещаю HTML-код в часть тела, но когда я помещаю его в тело и внутри некоторых div, это не работает. – Lukasin

Смежные вопросы