sqript反応がなく困ってます

このQ&Aのポイント
  • sqript反応がなく困ってます。JavaScriptで現在の年と月を取得し、アラートメッセージとして表示するコードを書いていますが、反応がありません。
  • また、配列をソートする際にも問題が発生しています。例えば、[10000, 500, 20000]という配列をソートした場合、500が最初に来ないことになります。なぜでしょうか?
  • これらの問題について解決策を教えていただけると助かります。
回答を見る
  • ベストアンサー

sqript反応がなく困ってます

var d=new Date(); var fullYear=d.getfullyear(); alert(fullYear+"年"+month+"月") ///////// var tei=[ {name:"野球部",yosan:20000} ,{name:"サッカー部",yosan:10000} ,{name:"卓球部",yosan:12000} ,{name:"写真部部",yosan:24000} ]; tei.sort( function(a,b){ var aYosan=a["tei"]; var bYosan=b["tei"]; if(aYosan<bYosan)return -1; if(aYosan<bYosan)return 1; return 0; } for(var i=0;i<tei.length;i++){ document.write( i+":"+tei[i]["name"]+","+tei[i][yosan]+"<br>" ) } それとsortなんですが var tei=[10000,500,20000]; tei.sort; alert(tei); という場合 500が前に来ません どうしてなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 Scriptに不備が沢山あるため動きません。 (Firebug等の開発ツールで一目瞭然です) エラー箇所はコメントに記入しましたので見比べてください。 >それとsortなんですが http://webdrawer.net/javascript/jssort.html 上記URLを参考にしてください。(デフォルトの並び替えはアルファベット順) また tei.sort; ではなく tei.sort(); です。 ==== 修正版JavaScript var d = new Date(); // getfullyear()ではなくgetFullYear(); var fullYear=d.getFullYear(); // monthを定義しないとaertの部分でエラー var month = d.getMonth(); alert(fullYear+"年"+month+"月") var tei = [ { name:"野球部",yosan:20000 }, { name:"サッカー部",yosan:10000 }, { name:"卓球部",yosan:12000 }, { name:"写真部部",yosan:24000 } ]; tei.sort( function(a,b){ // a,bに入ってくるのはteiオブジェクトなので比較する値はyosan var aYosan=a['yosan']; var bYosan=b['yosan']; if(aYosan<bYosan)return -1; // if(aYosan>bYosan)return 1;では上の条件と変わらないので並び変わらない if(aYosan>bYosan)return 1; return 0; }); for(var i=0;i<tei.length;i++) { // tei[i][yosan]ではyosanが変数となってしまうのでエラー「'」でくくる document.write ( i + ':' + tei[i]['name'] + ',' + tei[i]['yosan'] + '<br>' ); }

関連するQ&A

  • javascritp「sort」メソッドについて

    WEB制作初心者、勉強中のものです。 javascritpのsortメソッドについて質問です。 無名関数を使って偶数と奇数を並び替えるコードについてですが、 下記の場合、function(a,b)の引数a,bには、一体どこの数値が入ってるのでしょうか。 var no=[1,2,3,・・・]の中だと思うのですが、、、、a,bが一体何を指すのが 教えていただけないでしょうか? // 『sort』の引数として、使い捨ての関数を作成して利用する var no = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // 配列作成 no.sort(function (a, b) { // 偶数を前に、奇数を後ろにソートする if (a % 2 == 0 && b % 2 != 0) return -1; if (a % 2 != 0 && b % 2 == 0) return 1; return 0; }); alert(no); // 『2, 4, 6, 8, 10, 1, 3, 5, 7, 9』と表示 よろしくお願い致します。

  • 年月日のチェックなんですが…

    いつもお世話になっております。 数日に渡り、あれこれと模索していましたが、どうしても分からないのでご質問させて頂きます。 どなたかご教授頂ければ幸いです。 やりたい内容と致しましては、 複数あるテキストの年月日が正しいものであるかどうかのチェックをJavascriptで行いたいのですが、どうしても始めの1つしかチェックを行ってもらえず、2つ目は全くチェックがかからない状態です。 どうやればいいのでしょうか… 因みにソースは以下の様に書いてみました。 <html> <meta http-equiv="Content-Type" content="text/html;charset=EUC-JP"> <head> <title>月日チェック</title> <script language="JavaScript"><!-- function check() {  txt = document.myFORM.elements["num[]"][0].value;  txt2 = document.myFORM.elements["num[]"][1].value;  var hoge = [ txt,txt2 ];  for(i=0; i<2; i++) {   if(!hoge[i] == "") {    if(!hoge[i].match(/^\d{4}\/\d{1,2}\/\d{1,2}$/) ){     alert("開始日の入力に誤りがあります\n\n例:2009/01/01 or 2009/1/1");     return false;    }    myData = hoge[i].split("/");    var vYear = myData[0] - 0;    var vMonth = myData[1] - 1;    var vDay = myData[2] - 0;    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){     var vDt = new Date(vYear, vMonth, vDay);     if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){      return true;     }else {      alert("正しい月日を入力して下さい");      return false;     }    }else {     alert("正しい月日を入力して下さい");     return false;    }   }  } } // --></script> </head> <body> <form name="myFORM" method="post" action="res.html" onSubmit="return check()"> <input type="text" size="16" name="num[]"> <br> <input type="text" size="16" name="num[]"> <input type="submit" value="調べる"> </form> </body> </html>

  • 可変なデータをチェックしたいのですが・・・

    いつもお世話になっております。 今回、どうしても行き詰っていることは 『事前にinsertされたデータをdbから呼び出してきて、それを変更した際に正しく入力されているか??』 ということなんですが、どしてもチェックが行えずに困っています。 また、呼び出されたデータというものが、常に変動する可能性があることから、どのように既存データ分をループして処理を行えばいいのか分からない次第です。 どなかた大変お忙しい中かとは思いますが、ご教授よろしくお願い致します。 以下が、だいぶ端折らせて頂きましたソースです。 <html> <meta http-equiv="Content-Type" content="text/html;charset=EUC-JP"> <head> <title>sample</title> <script language="JavaScript"><!-- function s_chk() {  aaa = document.form1.elements["sat[]"].length;  for( i=0; i<aaa; i++){   var hoge = [ document.form1.elements["sat[]"][i].value ];   var flag;   flag = true;   if(!hoge[i] == "") {    if(!hoge[i].match(/^\d{4}\/\d{1,2}\/\d{1,2}$/) ){     alert("正しい日付を入力して下さい");     return false;    }    myData = hoge[i].split("/");    var vYear = myData[0] - 0;    var vMonth = myData[1] - 1;    var vDay = myData[2] - 0;    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){     var vDt = new Date(vYear, vMonth, vDay);     if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){      flag = true;     }else {      alert("正しい月日を入力して下さい");      return false;     }    }else {     alert("正しい月日を入力して下さい");     return false;    }   }  }  return flag; } // --></script> <body> <form name="form1" method="post"> <?php  for($i=0; $i<count($hoge); $i++) {   if($set_hoge[$i] == "Y") {    print "<input type='text' name='sat[]' size='13' maxlength='10' value=$hogehoge[$i]>\n";   }  } ?> <input type="button" name="sbmit" value="送信" onClick="s_chk();send()"> </form> </body> </html>

  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。

  • FeedApi 不明点

    Google FeedAPiを使ったjavascriptのプログラミングで、どうしてもバグが取り除けなくて 困っています。 具体的には下記のコードです。 ------------------------------------------- <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("feeds", "1"); var entryArray = new Array(); var entryNum = 0; // alert(entryArray.length); function initialize() { feedAdd("xmlURL", 1); feedAdd("xmlURL", 1); feedAdd("xmlURL", 1); feedAdd("xmlURL", 1); feedAdd("xmlURL", 1); } function feedAdd(rssUrl, boolNum) { var feed = new google.feeds.Feed(rssUrl);//フィードの取得 feed.setNumEntries(10);//ブログ1つあたりの取得するフィード数 feed.load(function(result) { if (!result.error) { for (var i = 0; i < result.feed.entries.length; i++) { entryArray.push(result.feed.entries[i]); var date = new Date(result.feed.entries[i].publishedDate); var title = result.feed.title; //ソート用(日付)を連想配列に代入 entryArray[entryNum].sortDate = ( date.getFullYear()*10000 ) + ( (date.getMonth() + 1)*100 ) + date.getDate(); if (result.feed.title.match(/^PR:/)){ alert("") }else{ entryArray[entryNum].blogName = result.feed.title;//ブログ名を連想配列に代入 entryNum+=1; } } } if(boolNum==1){ feedOutput("feed", 15);//フィードの出力 } }); } //フィードの出力(feedId:出力するオブジェクトのID , listNum:出力するリスト数。「0」の場合全て) function feedOutput(feedId, listNum){ var useFeed = ""; var container = document.getElementById(feedId);//表示部分を選択 entryArray = asort(entryArray, "sortDate");//日付でソート if(listNum==0){ listNum = entryNum; } for (var i = 0; i < listNum; i++) { var entry = entryArray[i]; var date = new Date(entry.publishedDate);//日付の表示変更 useFeed += '<li>' + date.getFullYear() + '年' + (date.getMonth() + 1 ) + '月' + date.getDate() + '日 <a href="' + entry.link + '" target="_blank">' + entry.title + '</a>(' + entry.blogName + ')</li>';//HTMLで書き出し } container.innerHTML = '<ul>' + useFeed + '</ul>'; } function asort(myArray, key){ //return myArray.sort ( function (b1, b2) { return b1[key] > b2[key] ? 1 : -1; } );//昇順 return myArray.sort ( function (b1, b2) { return b1[key] > b2[key] ? -1 : 1; } );//降順 } google.setOnLoadCallback(initialize); </script> ------------------------------------------- amebloからPR記事が読み込まれるのを防ぐため、 正規表現にて取り除く処理を入れたいのですが、どのように対応すればいいのかわからず。。 どなたか、宜しくお願いします。

  • 半角英数字のみの入力にエラーを返すには

    運営しているサイトに設置したコメントフォームからスパムがたくさん送信されてきます。 その対策として、「氏名のよみがな」入力欄が半角英数字のみの入力の場合にはアラートを出して投稿できないようにしたいです。 下記のようなJSを使用していますが、 if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } の部分を変更して「半角英数字しか入力されていない場合、アラートを返す」ようにするには、どうしたら良いでしょうか? htmlの文字コードはShift_JISです。 よろしくお願いします。 function postComment { var name = eval('document.name.value'); var kana = eval('document.kana.value'); var email = eval('document.email.value'); var comment = eval('document.comment.value'); sum++; if (!name) { alert('氏名を入力してください。'); return false; } else { if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } else { if (!email) { alert('メールアドレスを入力してください。'); return false; } else { if (!comment) { alert('コメントを入力してください。'); return false; } else { var confirm_text = '以下の内容で送信します\n' + 氏名:' + name + '\n よみがな:' + kana + '\n メール:' + email + '\n 本文:' + comment; if (!confirm(confirm_text)) { return false; } else { alert('コメントを送信しました。'); } } } } } }

  • カレンダー作りをしてるのですが・・・

    うまく表示されずデバッグでアラートをいれて調べてみたらアラート18(<!-- carenda() //--> のところで落ちてしまいました。 カレンダーのソースはネットで調べて、ソースをみながらいじくって書いたのですが 自分にもわかんない部分でプログラムが落ちてしまいました。 助言よろしくお願いします。 <!-- カレンダーの表示 --!> <HTML> <HEAD> <script type="text/javascript"> <!-- alert("13"); --> </script> <INPUT type="submit" value="LOGIN"/>. <form name="LOGIN" method="post" action="/cgi-bin/Login.cgi"></form> <script type="text/javascript"> <!-- alert("14"); function defTD(str, iro){ return "<TD align='center'><B><FONT size='-2' color='" + iro + "'>" + str + "</FONT></B></TD>"; } function carenda(){ var now = new Date(); var year = now.getFullYear(); var month = now.getMonth()+1; var date = now.getDate(); var day = now.getDay(); var last_date = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if(month==2){ if(year%4==0){ if((year%100==0) && (year%400!=0)){ }else{ last_date[1] = 29; } } } document.writeln("<TABLE border=0 cellspacing=3><TR><TD colspan='7' align='center'><B><U><FONT size='-1'>" + year + "年" + month + "月</FONT></B></U></TD></TR>"); alert("15"); document.writeln("<TR>" + defTD("日","red") + defTD("月","black") + defTD("火","black") + defTD("水","black") + defTD("木","black") + defTD("金","black") + defTD("土","blue") + "</TR>"); document.write("<TR>"); for(dayIndex=0; dayIndex<(new Date(year,month-1,1)).getDay(); dayIndex++) { document.write(defTD("&nbsp;","white")); } /* alert("16"); for(i=1; i<=last_date[month-1]; i++){ if(i!=1 && dayIndex == 0) { document.write("<TR>"); } if(i==date){ document.write(defTD(i,"orange")); }else{ switch(dayIndex){ case 0: document.write(defTD(i,"red")); break; //28日がある日にテキストを挿入する。 //土曜日がある日にテキストを挿入する場合。 case 6: document.write(defTD(i,"blue")); document.writeln("</TR>"); //週の終りのタイミングで行う document.write("<TR>"); for(j=0;j<7;j++){ document.write("<TD>"<input='text'>"</TD>"); } document.writeln("</TR>"); //ここまで break; default: document.write(defTD(i,"black")); break; } } dayIndex++; dayIndex%=7; } */ } //--> </script> <script type="text/javascript"> <!-- alert("17"); --> </SCRIPT> </HEAD> <BODY> <TABLE border=2 cellspacing=1><TR><TD> <SCRIPT type="text/JavaScript"> alert("18"); <!-- carenda(); //--> alert("19"); </SCRIPT> </TD></TR> </TABLE> </BODY> </HTML> <!-- カレンダー終了 --!>

  • プルダウンメニューを選択していない時に送信ボタンを押した場合、(必須の)アラートを表示したい。

    過去にほぼ同じ質問がありましたが、それでも解決出来なかったので質問させていただきました。 フォームで未入力の項目に対してアラートとフォーカスされるようにしました。 そこにプルダウンメニューを加えたものを作ろうとしたのですが、アラートの内容が全部同じ(職業が選択されていません)になってしまった事と、アラートは表示されたのですが、プルダウンメニューを選択してもアラートが出続けてしまいます。 プルダウンメニューが未選択の場合にのみアラートを表示するにはどうしたらよいでしょうか。 <SCRIPT language="JavaScript"> <!-- function chkHissu(frm){ var hissu=Array('name','kana','age','mail','sex','syumi'); var hissu_nm = Array('名前','フリガナ','年齢','メールアドレス','性別','趣味'); var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; if(obj.type=='text' || obj.type=='textarea'){ if(obj.value==''){ alert(hissu_nm[i]+'は必須入力項目です'); frm.elements[hissu[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){ alert(hissu_nm[i]+'は必須入力項目です'); return false; } } } return true; } function check(value){ //数字かどうかのチェック if(isNaN(value)){ alert("数値を半角で入力してください。"); //警告コメント document.form1.age.focus(); return false; } //入力があるかどうかのチェック if(!value){ alert("年齢を入力してください。"); //警告コメント document.form1.age.focus(); return false; } } function checkAd(address){ if(!address){ alert("メールアドレスを入力してください。"); } else if(address.indexOf("@",0)<=0){ alert("メールアドレスが正しくありません。"); document.form1.mail.select(); return false; } } //-- </SCRIPT> ご存知の方がいらっしゃいましたらご教授願います。

  • Array.sortメソッドのデフォルト比較関数

    JavaScriptのArray.sortメソッドは、 引数を指定しなければデフォルトの比較関数でソートされますが、 この比較関数を取り出して利用できないでしょうか。 要件は、プロパティ[name]と[value]を持ったオブジェクトの配列のソートです。 nameプロパティは半角英数字の文字列で、これをキーにソートしたいと考えています。 ソートの基準は、Array.sortのデフォルトと同じです。 つまり、こんなコードを想定しています。 var ary = [o1, o2, o3]; // o1~o3はそれぞれ上記のオブジェクト ary.sort(function(a, b){ return compare(a.name, b.name); }); このコードにおけるcompare関数を、Array.sortのデフォルト比較関数にしたいのですが、 これは自前で作成するしかないのでしょうか。 数値だけでなく文字列全般の比較になるので、結構実装が面倒そうなのですが、 自作する場合に何か使えそうな標準関数等、無いでしょうか。 今のところ思いついているのは、下記みたいなものです。 var compare = function(a, b) {  var temp = [a, b];  temp = temp.sort();  return temp[0] === a ? -1 : 1; } 比較関数内で更にArray.sortを呼んで2項目をソートし、 順番が入れ替わったかどうかを判定するだけです。 何だか冗長で気持ち悪いコードですので、代案を探しています。

  • 未選択のプルダウンメニューをアラートしたい

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 フォームで未入力の項目に対してアラート&フォーカスされるようにしました。 ここに『住んでいる県』(プルダウン)を追加したいのですがどうしてもうまくいきません。 <script type='text/javascript'> <!-- function check(frm){ var hissu=Array('name','zip','sex'); var hissu_nm = Array('名前','郵便番号','性別'); var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; if(obj.type=='text' || obj.type=='textarea'){ if(obj.value==''){ alert(hissu_nm[i]+'は必須です'); frm.elements[hissu[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){   alert(hissu_nm[i]+'は必須です'); return false; } } } return true; } //--> </script> どうかお分かりになる方よろしくお願いいたします。

専門家に質問してみよう