JavaScriptを共通して使用するには?
- 評価
- クリップ 1
- VIEW 1,354

退会済みユーザー
JavaScriptについて質問がございます。
現在あるPC用サイトをレスポンシブ対応に修正してます。
ページのソース構成は以下のようになっています。
<head>
<body>
コンテンツ1.PC用
コンテンツ1.スマホ用
コンテンツ2.PC用
コンテンツ2.スマホ用
…というような構成になります
(デバイスワイドでコンテンツ表示が切り替ります)。
質問内容はPC用コンテンツにあるJavaScriptを
同じ内容でスマホ用にも使用したいのですが
共通して使用する方法はないでしょうか?
短文であればID名をそれぞれ用意するだけいいものの
長文になるとソースが長くなり(関数や変数等もそれぞれで必要)
作業が非常に大変になります。
どうか分かる方教えていただけないでしょうか?
よろしくお願いします。
【一例】
コンテンツ1.PC用にあるhtml
<div id="map"></div>
<script type="text/javascript">
loadmap("○○○○○","○○○○○");
function loadmap(lat,lng) {
var canvas = document.getElementById('map') ;
geocoders = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat,lng);
var mapOptions = {
zoom: 15 ,
center: latlng ,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
maps = new google.maps.Map( canvas , mapOptions ) ;
markers = new google.maps.Marker({
map: maps ,
position: latlng,
}) ;
}
</script>
上記のhtml、javascriptはコンテンツ1.PC用内で
グーグルマップを呼び出すものです。
これをコンテンツ1.スマホ用にも共通して使用するには
どうすればいいでしょうか?
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
下記のようにloadmap関数を少し書き換えて、
DOM構築後に実行するだけではいけませんか?
document.addEventListener("DOMContentLoaded", function() {
loadmap("map","○○○○○","○○○○○");
loadmap("スマホ用ID","○○○○○","○○○○○");
});
function loadmap(id,lat,lng) {
var canvas = document.getElementById(id) ;
geocoders = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat,lng);
var mapOptions = {
zoom: 15 ,
center: latlng ,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
maps = new google.maps.Map( canvas , mapOptions ) ;
markers = new google.maps.Marker({
map: maps ,
position: latlng,
}) ;
}
bodyの閉じタグ直前でしたらDOMContentLoadedは不要かと思いますが、
コンテンツ1.PC用
の箇所や、<head>内に記述する場合は記述してください。
そもそもこのような、PC用とSP用でコンテンツが重複したレスポンシブの手法は避けたいところですが。。。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
check解決した方法
0
この件の質問ですが、javascript については依頼者の方で対応して下さるということになりました。回答やコメント頂いた方、ご協力して頂いたにも関わらず中途な形になり大変申し訳ありません。自分自身知識不足であり、また表現不足でもあったと思います。反省するところは反省し、また別でわからないことがあれば質問すると思いますので、何卒宜しくお願いします。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.36%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2016/06/12 15:07
タイトルの「 javaスクリプト」は「JavaScript」にされたほうが良いと思います。また、具体的にHTMLおよびCSS、JavaScriptなどを質問文に追記いただいたほうが回答を得られやすいと思います。
退会済みユーザー
2016/06/12 15:11
そうですね、タイトルは変更します。
ソースについては記述できる範囲で追加します。
ご指摘ありがとうございます。
kei344
2016/06/12 15:23
コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
退会済みユーザー
2016/06/12 15:27
このサイト初心者で、質問方法が不慣れですみません。
本文修正しておきます。
kei344
2016/06/12 15:38
いえ、編集ありがとうございます。ばらばらと五月雨的で申し訳ないのですが、ページのソース構成がわかりにくいです。同一ページに複数のデバイス用コンテンツがあり、それを切り替えているということでしょうか。その部分がわかるHTMLを記述いただくことは可能でしょうか。また、今現在共通使用できていない理由はどのあたりにありますでしょうか。
退会済みユーザー
2016/06/12 15:51
そうですね、元々PC用のページのですが、
新たにスマホで見れるように、スマホ用コンテンツを追加していっている感じです。申し訳ないのですが、表記は出来ないですね。
共通使用できていない理由ですが、スマホ用にJavaScriptを作成していないので
理由がわかないです。
大変説明不足で申し訳ないのですが、要は同じJavaScriptを使用する方法を知りたいということなのです。。。
kei344
2016/06/12 17:17
同じJavaScriptを使用する方法はあります(というか出来ない理由のほうが少ない)が、HTMLの構造がどう変わるかがわからなければ提示しにくいです。
退会済みユーザー
2016/06/16 14:19
この件の質問ですが、javascript については依頼者の方で対応して下さるということになりました。回答やコメント頂いた方、ご協力して頂いたにも関わらず中途な形になり大変申し訳ありません。自分自身知識不足であり、また表現不足でもあったと思います。反省するところは反省し、また別でわからないことがあれば質問すると思いますので、何卒宜しくお願いします。
kei344
2016/06/16 14:37
まだ質問が「受付中」になっていますが、いったんご自身の回答をもって「解決済」にされてはいかがでしょうか。