У меня очень простая страница, но она не работает, и я не понимаю, почему.
<head>
<script src='js/jquery-1.11.0.js'></script>
<script>
$('#uno').change(function() {alert('ok');});
</script>
</head>
<body>
<form name='input' id='formgraph'>
<select id='uno' name='uno'>
<option value='1'>1</option>
<option value='2'>2</option>
</form>
</body>
Поэтому он должен предупреждать о том, когда я изменяю значение, но он не делает этого, и я не понимаю, почему.
Вы должны поместить свой код javascript либо в конец документа (после <body>
), либо в $(document).ready(function(){});
Как это:
<head>
<script src='js/jquery-1.11.0.js'></script>
</head>
<body>
<form name='input' id='formgraph'>
<select id='uno' name='uno'>
<option value='1'>1</option>
<option value='2'>2</option>
</select>
</form>
</body>
<script>
$('#uno').change(function() {alert('ok');});
</script>
Или это:
<head>
<script src='js/jquery-1.11.0.js'></script>
<script> <!-- You might want to put this, too after your </body> -->
$(document).ready(function()
{
$('#uno').change(function() {alert('ok');});
}
</script>
</head>
<body>
<form name='input' id='formgraph'>
<select id='uno' name='uno'>
<option value='1'>1</option>
<option value='2'>2</option>
</select>
</form>
</body>
Вы также можете поместить свой javascript в другой файл, а не в середине вашего HTML.
У вас также была недопустимая разметка, потому что вы не закрыли <select>
, я исправил его в своих примерах.
Он рекомендовал загрузить js в конце страницы. Вы забыли закрыть теги select и html.
</head>
<body>
<form name='input' id='formgraph'>
<select id='uno' name='uno'>
<option value='1'>1</option>
<option value='2'>2</option>
</select>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$('#uno').change(function() {alert('ok');});
</script>
</body>
</html>
У вас есть два варианта.
Вы можете использовать готовый документ:
$(document).ready(function() {
$('#uno').change(function(){
alert('ok');
});
});
Которая будет ждать, пока документ будет готов, прежде чем запускать код в тегах скрипта.
Или (ИМО - лучший вариант) - разместить свой тег скрипта в конце тела:
<head>
</head>
<body>
<form name='input' id='formgraph'>
<select id='uno' name='uno'>
<option value='1'>1</option>
<option value='2'>2</option>
</form>
<script src='js/jquery-1.11.0.js'></script>
<script>
$('#uno').change(function() {alert('ok');});
</script>
</body>
Это приведет к такому же эффекту с меньшим количеством кода. Так как тег сценария ниже в документе, а браузер читает сверху вниз по порядку - содержимое тега скрипта будет работать до тех пор, пока остальная часть документа не будет готова.
Корень проблемы состоит в том, что вы не можете выбрать $ ('# uno') до тех пор, пока он не будет существовать в документе.
$(document).ready()
или запустите скрипт после визуализации элемента.