▽1
●
a-kuma3 ●100ポイント ベストアンサー |
url に含まれにくい文字で、css と javascript の url をつなげたものを value に指定して、String#split で、分割すれば良いと思います。
例えば、セミコロンで区切るとしたら。
<select id="selectstyle" onchange="changesytle(value);"> <option value="css/style1.css;js/style1.js">スタイル1</option> <option value="css/style1.css;js/style2.js">スタイル2</option> </select>
<script> // 関数 changeStyle は、使ってる select よりも前にあっても大丈夫 function changeStyle(sel) { var opt = sel.options[sel.selectedIndex]; var val = opt.value.split(";"); // セミコロンで option の value を分割する alert(val[0]); // ひとつめが、css の URL alert(val[1]); // ふたつめが、javascript の URL } </script> <select id="selectstyle" onchange="changeStyle(this);"> <!-- this で select を関数に渡す --> <option value="css/style1.css;js/style1.js">スタイル1</option> <option value="css/style2.css;js/style2.js">スタイル2</option> </select>
String#split は、その文字列を、引数に指定した文字で分割して、その分割された複数の文字列からなる 配列 を返します。
id:m0r1y055tan さんがコメントに書いたコードだと、こんな感じになります。
function myFunction() { var str = "css/style1.css;js/style1.js"; var res = str.split(";"); // 文字列 str をセミコロンで分割 document.getElementById("selectstyle").href = res[0]; // 分割されたひとつ目が、スタイルシートの URL }
記述場所はselect optionのすぐ下でよいのでしょうか?
javascript の関数名は、最後に解釈されるので、<script> での定義が、実際に使われている <select> よりも前にあっても問題ありません。
cssfilename = new Array('hoge1.css','hoge2.css');
valueは0,1,…でいいと思います。cssfilename[value]で参照。jsも同様に。