更改CSS样式表src onChange选择框

 function achat_change_themes() { var rel = $('link[title="chat_theme"]'); var select = $('#achat_times').attr('value'); if(select == "GrayScale") { rel.attr('src' , 'www.avacwebthemes.vacau.com/css/mario_theme.css'); } else if (select == "Mario") { rel.attr('src' , 'www.avacwebthemes.vacau.com/css/mario_theme.css'); } else if (select == "Eartone") { rel.attr('src' , 'www.avacwebthemes.vacau.com/css/mario_theme.css'); } else if (select == "Dark") { rel.attr('src' , 'www.avacwebthemes.vacau.com/css/mario_theme.css'); } else if (select == "Floral") { rel.attr('src' , 'www.avacwebthemes.vacau.com/css/mario_theme.css'); } else if (select == "Military") { alert(www.avacwebthemes.vacau.com/css/mario_theme.css); } }  

HTML MOCK

  GrayScale Mario EarthTone Dark Floral Military  

基本上我想做的是在select的change事件上它会改变head中链接标记的src …比如

并且每次我在最后一次选择时都想要改变它,当我测试它时,只需要5分钟就可以了,并尝试使用jQuery进行javascript函数。 它没有运行任何建议?

我尝试取出整个内部代码,并且我一直在修改achat_change_themes吗? 我必须写错了函数吗?

我有一些建议,都试图直接回答你的问题,如果你不介意,还试图帮助改进你的代码:

建议1:我认为你正在寻找链接的’href’属性,而不是’src’。

建议2:我猜这只是为了说明问题,但为了以防万一(我已经忘记了很多这样的事情):确保将“www.avacwebthemes.vacau.com/css/mario_theme.css”更改为到时候适当的地址。

建议3:在你的函数中使用javascript switch语句而不是一堆if。 它更清洁:

 switch(select) { case "Grayscale": { rel.attr('href', 'www.avacwebthemes.vacau.com/css/mario_theme.css'); break; } case "Mario": { rel.attr('href', 'www.avacwebthemes.vacau.com/css/mario_theme.css'); break; } //Etc } 

建议4:如果你想进入jQuery,我建议使用类似下面的代码(脚本块进入体内,而不是头部):

  

使用jQuery change()事件而不是onChange:

attr("src",link); 是错的 – 你应该改变href。

而不是使用attr("val")来获取下拉列表的值,您需要val()。

您还将#achat_themes拼错为#achat_times

这是你解决所有问题的小提琴:

http://jsfiddle.net/498Z5/

你为什么不试试这种方式:

尝试小提琴: http//jsfiddle.net/Ng24P/

 $(function () { $('#achat_themes').change(function () { changeTheme($(':selected').val()); }); }); function changeTheme(theme) { var stylshit = $('[title="chat_theme"]'); stylshit.attr('href','http://sourcefile.com/css/'+theme.toLowerCase()+'.css'); alert(stylshit.attr('href')); }