現在HTML&CSS、JavaScriptでの構築を行っているのですが、HTML内にボタンを表示して、クリックしてからJavaScriptを実行させたいと考えています。ですが、ボタンクリックの関数などはわかってはいても、どこに書けばいいのかわからず困っています。以下のコード内にボタンをクリックすることでイベント実行できるようなコードの書き方を教えてください。よろしくお願いします。
※このコード内での実装を考えています。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
#selects select { width:9em; margin-right:1em; }
</style>
</head>
<body>
<div id="selects"></div>
<div><ol id="result"></ol></div>
<script>
{
const placeData = [
{ title: '市', item: [
{name:'A市', location:[
{ lat:0, lng:0, subname:'物件1', image:'a.jpg'},
{ lat:100, lng:30, subname:'物件2', image:'b.jpg'}
]},
{name:'B市', location:[
{ lat:0, lng:70, subname:'物件4', image:'d.jpg'},
{ lat:100, lng:100, subname:'物件5', image:'e.jpg'}
]}
]},
{ title: 'スパ', item: [
{name:'スパ1', location:{ lat:10, lng:10}},
{name:'スパ2', location:{ lat:90, lng:90}}
]},
{ title: 'コンビニ', item: [
{name:'コンビニ1', location:{ lat:20, lng:10}},
{name:'コンビニ2', location:{ lat:80, lng:90}}
]},
{ title: '病院', item: [
{name:'病院1', location:{ lat:30, lng:20}},
{name:'病院2', location:{ lat:70, lng:80}}
]}
];
const
selects = [],
wrap = document.getElementById('selects'),
result = document.getElementById('result'),
Checker = () => !selects.some( e => e.selectedIndex == 0 ),
Clear = () => { result.innerHTML = ''; },
Distance = (p, q) => Math.sqrt(Math.pow(p.lat-q.lat,2)+Math.pow(p.lng-q.lng,2)),
SumDist = (p, a) => a.map( e => Distance(p, e)).reduce((s, e) => s + e, 0),
CalcList = () => {
const ps = selects.map((e, i) => placeData[i].item[e.selectedIndex-1].location);
const p = ps.shift();
return p.map( e => [ SumDist(e, ps), e ] );
},
DispList = () => {
const list = CalcList();
list.sort( (a, b) => a[0] - b[0] );
for(let i=0; i<Math.min(list.length, 3); i++){
const html = `<li>${list[i][1].subname} <img src="${list[i][1].image}" />
<small> (${list[i][0].toFixed(2)})</small></li>`;
result.insertAdjacentHTML('beforeend', html);
}
},
Initialize = () => {
for (let p, i = 0; p = placeData[i++];) {
let html = `<select><option value="">--${p.title}を選択--</option>`;
p.item.forEach((d, j) =>{
html += `<option value="${j}">${d.name}</option>`;
});
wrap.insertAdjacentHTML('beforeend', html + '</select>');
selects.push(wrap.lastElementChild);
}
};
Initialize();
wrap.addEventListener( 'change', e =>{ Clear(); if (Checker()) DispList(); });
}
</script>
</body>
</html>
A 回答 (1件)
- 最新から表示
- 回答順に表示
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【JavaScript】特定の条件で特...
-
キングファイルの背表紙を作成...
-
エクセルVBAでマルチページの切...
-
カンマ区切り形式ではなく、セ...
-
リンクをアップデートするしな...
-
VBAでマルチページのページ指定...
-
エクセルでアルファベット5段階...
-
パワーポイントで参照ページを...
-
Index hospitalization とは?
-
ExcelのROUND関数を一括解除し...
-
txtファイル内の指定の単語の数...
-
UserForm.showでマルチページ1...
-
リンクを送るとは?
-
秀丸エディタでファイル名のハ...
-
書かれているURLと飛んだ先のUR...
-
Dreamweaver現状維持したまま編...
-
PDFファイルの翻訳(科学技...
-
複数PDFファイル内の特定文字列...
-
PCで履歴書を作成したいんです...
-
「リンク」と「ハイパーリンク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptがoffだったらどっか...
-
海外の時間をホームページ上に表示
-
ホームページ内検索をフォーム...
-
【JavaScript】特定の条件で特...
-
JavaScriptからPerlへデータを...
-
JavaScriptを使用してマルチラ...
-
確認ダイアログを表示出来ない
-
【javascript】 IMEのカタカナ...
-
javascriptとcookieの判定とペ...
-
簡易版パスワード入力画面について
-
URL変更2
-
宜しくお願いします。
-
HTMLの取得と解析について
-
チェックボタンをクリックする...
-
pythonにおける単方向リストの...
-
パスワードを二つ用いて隠しペ...
-
カンマ区切り形式ではなく、セ...
-
キングファイルの背表紙を作成...
-
パワーポイントで参照ページを...
-
<IFRAME>でコンテンツ部分のみ...
おすすめ情報