jQueryが読み込めない

このQ&Aのポイント
  • 下記のようにサンプルコードを入力し、同一ファイル内にjsファイルを設置しているのですが、機能せず、ただのテキストボックスが表示されるのみです。
  • 大変初歩的な質問ですが、よろしくお願いします。
  • サンプルコードを入力しても、jQueryが正常に読み込まれず、テキストボックスが表示されるだけです。初歩的な質問で申し訳ありませんが、お助け願えればと思います。
回答を見る
  • ベストアンサー

jQueryが読み込めない

下記のようにサンプルコードを入力し、同一ファイル内にjsファイルを設置しているのですが、機能せず、ただのテキストボックスが表示されるのみです。 大変初歩的な質問ですが、よろしくお願いします。 ■phpファイル <body> <form action="" method=""> <label for="user-name">お名前</label><input type="text" id="user-name"><br> <label for="user-kana">フリガナ</label><input type="text" id="user-kana"> </form> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="jquery.autoKana.js"></script> <script> $(document).ready(function(){ $.fn.autoKana('#user-name', '#user-kana', {katakana:true}); }); </script> </body> ■jquery.autoKana.js (function ($) { $.fn.autoKana = function (element1, element2, passedOptions) { var options = $.extend( { 'katakana': false }, passedOptions); var kana_extraction_pattern = new RegExp('[^  ぁあ-んー]', 'g'); var kana_compacting_pattern = new RegExp('[ぁぃぅぇぉっゃゅょ]', 'g'); var elName, elKana, active = false, timer = null, flagConvert = true, input; elName = $(element1); elKana = $(element2); active = true; _stateClear(); elName.blur(_eventBlur); elName.focus(_eventFocus); elName.keydown(_eventKeyDown); function start() { active = true; }; function stop() { active = false; }; function toggle(event) { var ev = event || window.event; if (event) { var el = Event.element(event); if (el.checked) { active = true; } else { active = false; } } else { active = !active; } }; function _checkConvert(new_values) { if (!flagConvert) { if (Math.abs(values.length - new_values.length) > 1) { var tmp_values = new_values.join('').replace(kana_compacting_pattern, '').split(''); if (Math.abs(values.length - tmp_values.length) > 1) { _stateConvert(); } } else { if (values.length == input.length && values.join('') != input) { _stateConvert(); } } } }; function _checkValue() { var new_input, new_values; new_input = elName.val() if (new_input == '') { _stateClear(); _setKana(); } else { new_input = _removeString(new_input); if (input == new_input) { return; } else { input = new_input; if (!flagConvert) { new_values = new_input.replace(kana_extraction_pattern, '').split(''); _checkConvert(new_values); _setKana(new_values); } } } }; function _clearInterval() { clearInterval(timer); }; function _eventBlur(event) { _clearInterval(); }; function _eventFocus(event) { _stateInput(); _setInterval(); }; function _eventKeyDown(event) { if (flagConvert) { _stateInput(); } }; function _isHiragana(chara) { return ((chara >= 12353 && chara <= 12435) || chara == 12445 || chara == 12446); }; function _removeString(new_input) { if (new_input.match(ignoreString)) { return new_input.replace(ignoreString, ''); } else { var i, ignoreArray, inputArray; ignoreArray = ignoreString.split(''); inputArray = new_input.split(''); for (i

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

コードは見てませんが・・・ jQueryはgoogleのサイトから読み込むおつもりなのですよね? URLを再確認してみてください。 > //ajax.googleapis.com/~~       ↓   http://ajax.googleapis.com/ では? (英数を全角にしてあります)

kokoko69
質問者

お礼

ありがとうございます! おっしゃる通りにしたところ、しっかり機能しました! 本当にありがとうございます!

関連するQ&A

  • jqueryについて質問

    <script> $(function() { $("input").click(function(){ var menu = "#"+this.id; if(menu == "#Attendance") { var className = "AttendanceBody"; $(menu).ready(function() {$.AttendanceBody();}); } }); }); </script> $(menu).ready(function() {$.AttendanceBody();});の『AttendanceBody』を変数名にしたいのですがどのようにしたら動きますでしょうか?

  • Jquery Datepickerについて。。

    質問させてください。 javascriptが非常に苦手な初級エンジニアです。。 JqueryのDatepickerを使って、「レンタル希望日」という入力項目に入った日付を見て、「レンタル返却日」の選択できる日にちを変える、っというようなものを作っています。レンタル希望日の入力をする前にレンタルもとの販売店の選択をし、休店日も選択した販売店によって切り替えるような仕様です。苦手ながらも何とかそこまではできたのですが1点問題点が。。 レンタル希望日、返却予定日は第三希望まで入力する必要があります(必須)。 以下1ソースで第3希望までの入力を一元で行う方法があればと思っています。 丸ごと関数化すればいいのかと思い色々試してみましたが上手くいきませんでした。ソースを3回書くのはできれば避けたいです。 何卒よろしくお願いいたします。 ---------------------以下ソース $(function() { $( "#from" ).datepicker({ defaultDate: "+1w", minDate: '+3', maxDate: '2014年12月26日', dateFormat: 'yy年mm月dd日', changeMonth: true, beforeShow:function(){ var kyoten = $("select[name='kyoten']").val(); try{ if(kyoten == ''){ throw new Error('販売店を選択してください'); } }catch(e){ alert(e.message); window.location.reload();//あまりよろしくない。。 } }, beforeShowDay: function(day) { // カレンダー表示前に実行 var kyoten = $("select[name='kyoten']").val(); kekka = kyoten.split('_'); var result; switch (day.getDay()) { case 2: // 火曜日を選択できないようにする if(kekka[1] == 1){ result = [false]; }else{ result = [true]; } break; case 3: // 水曜日を選択できないようにする if(kekka[1] == 2){ result = [false]; }else{ result = [true]; } break; case 6: // 土曜日を選択できないようにする result = [false]; break; case 0: // 日曜日を選択できないようにする result = [false]; break; default: result = [true]; // それ以外は選択できる break; } return result; }, onClose: function( selectedDate ) { var toDate = $('#from').datepicker('getDate'); var toMin = $('#from').datepicker('getDate');//toDate var toWeek = toDate.getDay(); var tiNum = ''; var niNum = ''; // maxDateの挙動(選択した日にちの曜日番号によって(#to)で選択できる日にちを絞り込む) if(toWeek == 1) { // 月 tiNum = 4; } else if(toWeek == 2){ // 火 tiNum = 3; } else if(toWeek == 3){ // 水 tiNum = 2; } else if(toWeek == 4){ // 木 tiNum = 1; } else if(toWeek == 5){ // 金 tiNum = ''; } // minDateの挙動(金曜日のみ1を加算しない) if(toWeek == 5){ niNum = ''; }else{ niNum = 1; } toMin.setDate(toMin.getDate() + tiNum); toDate.setDate(toDate.getDate() + niNum); $( "#to" ).datepicker('option', {minDate: toDate, maxDate: toMin}); } }); $( "#to" ).datepicker({ defaultDate: "+1w", minDate: '+1', maxDate: '2014年12月26日', dateFormat: 'yy年mm月dd日', changeMonth: true, beforeShow:function(){ var kyoten = $("select[name='kyoten']").val(); try{ if(kyoten == ''){ throw new Error('拠点を選択してください'); } }catch(e){ alert(e.message); window.location.reload(); } }, beforeShowDay: function(day) { // カレンダー表示前に実行 var kyoten = $("select[name='kyoten']").val(); kekka = kyoten.split('_'); var result; switch (day.getDay()) { case 2: // 火曜日を選択できないようにする if(kekka[1] == 1){ result = [false]; }else{ result = [true]; } break; case 3: // 水曜日を選択できないようにする if(kekka[1] == 2){ result = [false]; }else{ result = [true]; } break; case 6: // 土曜日を選択できないようにする result = [false]; break; case 0: // 日曜日を選択できないようにする result = [false]; break; default: result = [true]; // それ以外は選択できる break; } return result; } }); }); </script> 以下html部分 <select name="kyoten"> <option value="">選択してください</option> <?php foreach( $kyotenArr as $key=>$var):?> <option value="<?php echo $var;?>"><?php echo $key;?></option> <?php endforeach;?> </select> 第一希望日<input type="text" id="from" readonly="readonly"> 第一希望返却日<input type="text" id="to" readonly="readonly"> <!--第3希望まであります。。

  • FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。

    FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。 下記のスクリプトでCSVから配列を取り込みましたが、 関数の外で、「csvRows」変数の中身を見る方法が分かりません。。 var csvLoader = new LoadVars(); var theFileObj = new LoadVars(); var theFile = csvLoader.sendAndLoad("test.csv",theFileObj,GET ); var csvRows = new Array(); theFileObj.onData = function(src) { var theFileArray = src.split("\r\n").join("\n").split("\n"); var theFieldNames = theFileArray[0].split(","); var numberOfFields = theFieldNames.length; for(var j=0; j<numberOfFields; j++){ theFieldNames[j] = removeQuotes(theFieldNames[j]); } for(var i=0; i<theFileArray.length; i++){ var tempArray = theFileArray[i].split(","); csvRows.push(tempArray); } } function removeQuotes(theString){ if (theString.charAt(0) == '"' || theString.charAt(0) == "'") { return theString.substr(1, theString.length - 2); }else { return theString; } }

    • ベストアンサー
    • Flash
  • jQueryが反映されません><

    jQueryとJavaScriptでToDoメモを作っています 下記のコードなのですが 削除ボタンが表示されないのとToDoリストがおかしな位置に来ます どうすればいいのでしょうか? <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link rel="stylesheet"type="text/css"href="css/style.css"> <script> monaca.viewport({width: 340});     document.addEventListener("deviceready",onDeviceReady,false); function onDeviceReady() { document.addEventListener("backbutton", onBkbtn, false); } function onBkbtn() { location.href = "index.html"; } </script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>CheckList</h1> </div> </center> <!--新規追加ボックス--> <center> <div id="new_div"> <input id="new_txt" type="text" value="" placeholder="ToDoを書き込んでください" style="width:270px" size="40"/> </center> <br> <div data-role="button" data-icon="plus" id="add_btn">追加</div> </div> <!--項目一覧--> <div id="items_div"></div> <div id="control_div"> <div data-role="button" data-icon="delete" id="done_btn">削除</div> </div> </div> <!--Android1.6対策--> <script src="gear5-0.3.js"></script> <script> //便利な関数の定義 function $(id) { return document.getElementById(id); } //変数の初期化 var todo_div = $("todo_div"); var db; var cbItems = [] ; //ドキュメント読み込み時のイベントを設定 window.onload = function() { if (window.openDatabase == undefined) { alert("WEB Databaseに対応していません!!") ; return } //データベースを開く db = window.openDatabase("todo.db", "1.0", "ToDo", 1024 * 1024); db.transaction(function(tr) { //テーブルがなければ作る var query = "CREATE TABLE IF NOT EXISTS todo_tbl(" + " todo_id INTEGER PRIMARY KEY, " + " memo TEXT NOT NULL " + ")"; tr.executeSql(query, [], loadItems); }); }; // アイテムの読み込み実行 function loadItems() { db.transaction(function(tr) { var query = "SELECT * FROM todo_tbl" ;   tr.executeSql(query, [] ,loadItems_onResult); }); } function loadItems_onResult(tr, rs) { //すべての子ノードを削除 while(items_div.hasChildNodes()){ items_div.removeChild(items_div.lastChild); } cbItems = []; //チェックボックスの作成 for (var i = 0; i < rs.rows.length; i++) { var row = rs.rows.item(i); var todo_id = row.todo_id; var memo = row.memo; //チェックボックスの追加 var cb = document.createElement("input"); cb.className = "large"; //CSSに対応させる cb.type = "checkbox"; cb.value = todo_id; cbItems.push(cb); var label = document.createElement("span"); label.innerHTML = memo; var line = document.createElement("div"); line.appendChild(cb); //チェックを追加 line.appendChild(label); //ラベルを追加 items_div.appendChild(line); //項目にlineを追加 } } //追加ボタンを押したときのイベント $("add_btn").onclick = function() { var text = $("new_txt").value; $("new_txt").value = ""; db.transaction(function(tr) { var query = "INSERT INTO todo_tbl(memo)VALUES(?)"; tr.executeSql(query,[text],loadItems); }); }; //削除を押した時のイベント $("done_btn").onclick = function() { db.transaction(function(tr) { for (var i in cbItems) { var cb = cbItems[i]; if(!cb.checked) continue; var query = "DELETE FROM todo_tbl WHERE todo_id=?"; tr.executeSql(query,[cb.value]); } },function(){ alert('削除失敗') },loadItems); }; </script> </body> </html>

  • jQueryでのclassの操作

    現在Wordpressに、文字のサイズを「小・中・大」と変えるjQueryを設置しています。 http://az-store.nrym.org/download/extend/jquery-fontsize-switcher/ Wordressではもともとbodyのclassに指定があるのですが、このjQueryを設置すると removeAttr("class")で削除されてしまいます。 そこで、もともとのClassを活かしたまま文字サイズ変更用のクラスだけを 削除&追加ができればいいのですが、 どうすればよいでしょうか? ただ、単純に「removeAttr("class")」の記述を削除してしまうと、 文字サイズ変更スイッチを押す度に、クラスが追加され続けるのでそれは避けたいです。 $(function(){ var currentstyle = readCookie('fontStyle'); if (currentstyle){ switchFont(currentstyle); }; $("li.sizeL").click(function(){ switchFont("fontL"); return false; }); $("li.sizeM").click(function(){ switchFont("fontM"); return false; }); $("li.sizeS").click(function(){ switchFont("fontS"); return false; }); }); function switchFont(className){ $("body").removeAttr("class").addClass(className); createCookie('fontStyle', className, 365); }; // cookie script http://www.quirksmode.org/js/cookies.html function createCookie(name,value,days){ if (days){ var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name){ var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; }

    • ベストアンサー
    • AJAX
  • JavaScriptで選択問題作成(3)

    お世話になります。 以前ここで質問をさせてもらった件で不具合が出来たのでまた質問をさせてもらいます。 以前のスレはこれです。 http://okwave.jp/qa/q9170301.html ここで教えてもらった通りに作成していたのですが、以下のような感じです。 <!DOCTYPE html>  <meta charset="utf-8"> <style> fieldset.q ul { list-style: none; } </style> <body> <h1>問題</h1> <fieldset class="q">  <legend>Q1. 九州の県は次のうちどれですか?</legend>  <ul>   <li><label><input type="checkbox" name="q1" value="true">福岡</label>   <li><label><input type="checkbox" name="q1" value="false">岡山</label>   <li><label><input type="checkbox" name="q1" value="false">山形</label>   <li><label><input type="checkbox" name="q1" value="true">長崎</label>   <li><label><input type="checkbox" name="q1" value="true">熊本</label>   <li><label><input type="checkbox" name="q1" value="false">新潟</label>   <li><label><input type="checkbox" name="q1" value="false">山口</label>   <li><label><input type="checkbox" name="q1" value="true">鹿児島</label>   <li><label><input type="checkbox" name="q1" value="true">佐賀</label>   <li><label><input type="checkbox" name="q1" value="false">青森</label>   <li><label><input type="checkbox" name="q1" value="true">宮崎</label>   <li><label><input type="checkbox" name="q1" value="false">千葉</label>  </ul>  <input type="button" value="解答">  <input type="hidden" name="q1" value=""> </fieldset> <p>  <input type="button" value="リセット">  <input type="button" value="終了"> <script> function check (e) {  var fieldset = e.parentNode;  var seikai = fieldset.querySelectorAll ('input[type="checkbox"][value="true"]');  var kaitou = fieldset.querySelectorAll ('input[type="checkbox"]:checked');  var hidden = fieldset.querySelector ('input[type="hidden"]');  var kotae;    if (seikai.length === kaitou.length) {   hidden.value = 'true';   alert ('正解です。');  }  else {   hidden.value = '';   kotae = Array.prototype.map.call (seikai, function (e) {    return e.parentNode.textContent;   }).join (', ');   alert ([    '不正解です。',    '答えは、'+ kotae + 'です。'   ].join ('\n'));    } } function ending () {  var es0 = document.querySelectorAll ('fieldset.q input[type="hidden"]');  var es1 = document.querySelectorAll ('fieldset.q input[type="hidden"][value=""]');  alert ([   '問題数は、'+ es0.length + 'です。',   '間違いは、' + es1.length + '問あります。'  ].join ('\n')); } function reset () {  var es = document.querySelectorAll ('fieldset.q input[type="hidden"]');  Array.prototype.forEach.call (es, function (e) { e.value = ''; }); } function listener (event) {  var e = event.target;    if ('button' === e.type)   switch (e.value) {   case '解答' :    check (e);    break;      case 'リセット' :    reset ();    break;      case '終了' :    ending ();    break;   } } reset (); document.addEventListener ('click', listener, false); </script> ここでなぜか 福岡 長崎 熊本 鹿児島 佐賀 宮崎にチェックを入れて解答したら もちろん正解になります。 その後に長崎のチェックを外してかわりに山形にチェックを入れて解答したらなぜか正解になります。もちろん山形はfalseにしています。 しかし福岡  山形 長崎 熊本 鹿児島 佐賀 宮崎にチェックを入れた状態で 解答をすると不正解になります。 何故でしょうか? 教えてください

  • チェックを入れて文字を表示する

    javascript初心者です。あつかましい質問で申し訳ありません。 他のページのサンプルを参考にしてチェックを入れた時はにチェックを入れると文字が表示されるチェックボックスを作成しました。更にチェックはひとつしか出来ないというjavascriptも拾ってきて組み合わせたのですが、チェックを付けてとなりにチェックを入れた時はじめに表示された文字が消えません。教えてください。 <script type="text/javascript"> var before = null; function test(e) { var tgt = e.srcElement ? e.srcElement: e.target; if (before == tgt && tgt.checkd == true) { tgt.checked = true; } else { var chks = document.getElementsByName('chkgroup'); for (var i = 0; i < chks.length; i++) { if (chks[i] != tgt) chks[i].checked = false; } } before = tgt; } <!-- function output(){ var str=""; var chkboxes=document.getElementsByName("chkgroup"); for(var i=0;i<chkboxes.length;i++){ var obj=chkboxes[i]; if (obj.checked){//チェックされていたらstrにvalue属性の文字列を追加する str+=obj.value; } } document.getElementById("result").innerHTML=str; } window.onload=function(){ var chkboxes=document.getElementsByName("chkgroup");//チェックボックス(chkgroup)を配 列で取得 for(var i=0;i<chkboxes.length;i++){//ループでチェックボックス全てにイベントハンドラを 設定 chkboxes[i].onclick=output; } }; //--> </script> <title>sample</title> <body> <form id="SAMPLE" action="#" onclick="test(event);"> <label for="chk1"><input name="chkgroup" id="chk1" type="checkbox" value="0">Item1</label> <label for="chk2"><input name="chkgroup" id="chk2" type="checkbox" value="1">Item2</label> <label for="chk3"><input name="chkgroup" id="chk3" type="checkbox" value="2">Item3</label> </form> <p id="result">ここに表示されます。</p> </body>

  • jqueryでクイズを作成

    jqueryでクイズを作っているのですが、下のプログラムのような問題を書く部分(問題1、問題2...)のところに改行などを用いた長い文章を書きたいのですがどのようにしたらよいでしょうか? // answers の先頭が正答になるようにして下さい。選択肢はシャッフルして表示されます。 var questions = [ {'question': '問題1', 'answers': ['富士山', '愛鷹山', '天保山', '八ヶ岳']}, {'question': '問題2', 'answers': ['バラ', 'チューリップ', 'タンポポ', '百合']}, {'question': '問題3', 'answers': ['あららぎ', 'せんじょうがはら', 'せんごく', 'かんばる']}, {'question': '問題4', 'answers': ['宇宙人', '異世界人', 'ドイツ人', '未来人']} ]; Array.prototype.shuffle = function() { var i = this.length; while(i){ var j = Math.floor(Math.random()*i); var t = this[--i]; this[i] = this[j]; this[j] = t; } return this; }; var answers = []; var current_question_number; $.each(questions, function (i, question) { question.true_answer = question.answers[0]; question.answers.shuffle(); }); $(function() { showQuestion(0); $('#answer_button').click(function () { var answer = -1; $.each($('#answers input'), function (i, value) { if ($(value).is(':checked')) { answer = i; return false; } }); if (answer == -1) { $('#warning').slideDown(); return false; } $('#warning').slideUp(); answers[current_question_number] = questions[current_question_number].answers[answer]; if (current_question_number < questions.length - 1) { showQuestion(current_question_number + 1); } else { showResult(); } }); }); function showQuestion(question_number) { current_question_number = question_number; var question = questions[question_number]; $('#question_number').text((question_number + 1) + "/" + questions.length); $('#question_body').text(question.question); $('#answers').empty(); $.each(question.answers, function (i, value) { $('#answers').append($('<li/>').append($('<input type="radio" name="answer" id="answer' + i + '"/>')).append($('<label for="answer' + i + '"/>').text(value))); }); } function showResult() { $('#question_view').hide(); $.each(questions, function (i, question) { var is_true = answers[i] === question.true_answer; $('#results').append($('<tr/>') .addClass(is_true ? 'true' : 'false') .append($('<th/>').text(i + 1)) .append($('<td/>').text(answers[i])) .append($('<td/>').text(question.true_answer)) .append($('<td/>').text(is_true ? '○' : '×')) ); }); $('#result_view').show(); }

  • 超初心者の質問

    今enchant.jsというライブラリで実際に自分でコードを書いてみようと思い、数列ほどのコードを見よう見まねで足してみたのですがうまくいきません。 enchant (); window.onload = function(){ var game = new Game(); game.fps = 30; game.preload('http://enchantjs.com/assets/images/chara1.gif'); game.onload = function(){ var bear = new Sprite(32, 32); bear.image = game.assets['http://enchantjs.com/assets/images/chara1.gif']; bear.tick = 0; bear.anim = [0, 1, 0, 2]; game.rootScene.addChild(bear); bear.addEventListener(Event.ENTER_FRAME, function() { bear.tick++; bear.frame = bear.anim[bear.tick % 4]; if (bear.scaleX == 1){ bear.x += 20; if (bear.x > 320 - 32)bear.scaleX = -1; } else{ bear.x -=7; if (bear.x < 0) bear.scaleX = 1; } }); bear.onEnterFrame = function() { var input = game.input; if (input.up) { this.y -= 5; } if (input.down) { this.y += 5; } }; }; game.start(); }; 下のほうの bear.onEnterFrame = function() { var input = game.input; if (input.up) { bear.y -= 5; } if (input.down) { bear.y += 5; } }; が足した部分です。 追加した部分以外のコードはクマのキャラクターが画面を右に左に走るアニメーションになっていて、それに↑↓ボタンで縦軸だけを操作できるコードを追加してみようと思ったんですがだめでした。 足した部分のコードを関数やイベントタイプを追加するなどいろいろやってみましたが、ダメでした。エラーは上のコードでは出てません。なぜでしょうか。ご教示ください。

  • Ajaxでデータベース(PostgreSQL)

    を非同期で読み込むことができるでしょうか? ファイルならば下記のようにすれば良いみたいですが データベースの場合のやり方がわかりません。 PostgreSQLのデータを読み込むにはどうしたら良いのでしょうか? <script> var xmlHttp; function loadText() { if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); } else { if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = null; } } xmlHttp.onreadystatechange=checkStatus; xmlHttp.open("GET","plan.txt",true); xmlHttp.send(null); } function checkStatus() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { alert(xmlHttp.responseText); } } </script> <form> <input type="button" value="read file" onClick="loadText()"> </form>

専門家に質問してみよう