以下是我的发言:
$(document).ready(function() {
$('#search_option').change(function() {
alert('changed');
if( $('#search_option').val() == "wiki" ) {
$('#search_form').setAttribute('action', "http://www.wikipedia.org/search-redirect.php");
$('#search_bar').setAttribute('name', "search");
alert('Got inside wiki');
} else {
$('#search_form').setAttribute('action', "http://www.google.com/search");
$('#search_bar').setAttribute('name', "q");
alert('Got inside google');
}
});
});
没有进入内部'警报正在触发,这意味着它们都没有运行,对吗?我似乎无法弄清楚为什么if语句的任何部分都没有运行,至少有一部分应该是
答案 0 :(得分:9)
setAttribute
是一个dom元素节点方法,使用.attr()
来表示jQuery方法
$(document).ready(function() {
$('#search_option').change(function() {
alert('changed');
if( $('#search_option').val() == "wiki" ) {
$('#search_form').attr('action', "http://www.wikipedia.org/search-redirect.php");
$('#search_bar').attr('name', "search");
alert('Got inside wiki');
} else {
$('#search_form').attr('action', "http://www.google.com/search");
$('#search_bar').attr('name', "q");
alert('Got inside google');
}
});
});
由于setAttribute
不是jQuery对象的方法,因此会产生错误并且代码会停止执行,因此它永远不会到达警报。
答案 1 :(得分:3)
.setAttribute()
不是有效的jQuery方法。使用.attr()
。
$(document).ready(function() {
$('#search_option').change(function() {
alert('changed');
if( $('#search_option').val() == "wiki" ) {
$('#search_form').attr('action', "http://www.wikipedia.org/search-redirect.php");
$('#search_bar').attr('name', "search");
alert('Got inside wiki');
} else {
$('#search_form').attr('action', "http://www.google.com/search");
$('#search_bar').attr('name', "q");
alert('Got inside google');
}
});
});
答案 2 :(得分:1)
尝试关注获取提醒: 在你的情况下,javascript执行在进入if或else后停止,然后在它到达alert语句之前抛出错误,检查类似情况你可以逐行向下移动alert语句。 要获得更好的解决方案,请使用firebug或其他devTools检查断点
$(document).ready(function() {
$('#search_option').change(function() {
alert('changed');
if( $('#search_option').val() == "wiki" ) {
alert('Got inside wiki');
$('#search_form').setAttribute('action', "http://www.wikipedia.org/search-redirect.php");
$('#search_bar').setAttribute('name', "search");
} else {
alert('Got inside google');
$('#search_form').setAttribute('action', "http://www.google.com/search");
$('#search_bar').setAttribute('name', "q");
}
});
});
更改为jQuery attr()
而不是setAttribute
,因为$('#something')
是jQuery对象而不是DOM节点,以修复错误。
最终代码:
$(document).ready(function() {
$('#search_option').change(function() {
alert('changed');
if( $('#search_option').val() == "wiki" ) {
alert('Got inside wiki');
$('#search_form').attr('action', "http://www.wikipedia.org/search-redirect.php");
$('#search_bar').attr('name', "search");
} else {
alert('Got inside google');
$('#search_form').attr('action', "http://www.google.com/search");
$('#search_bar').attr('name', "q");
}
});
});
答案 3 :(得分:0)
更改此处的行
if( $('#search_option').val() == "wiki" ) {
到
if($(this).find('option:selected').val() == "wiki") {
答案 4 :(得分:0)
尝试:
if($('#search_option option:selected').val()=="wiki"){