私はBootstrap 4フレームワークを使用してモバイルサイトを作成しています。私は<a>
タグがブラウザの画面サイズに基づいて指している場所を変更するJavaScript関数を作成しようとしています。以下は、ページのHTMLコードのほんのごく一部です:JavaScriptが画面サイズに基づくリンクを指していた場合の変更点
<div class="col-md">
<div id="accordion" class="form-group text-dark mt-3">
<!-- Cold Card -->
<div class="card">
<!-- Cold Temps -->
<!-- Temps include Make line temps, Refrigerator temps,
Freezer temps, and Beffet temps -->
<div class="card-header">
<a class="card-link"
data-toggle="collapse"
data-parent="#accordion"
href="#cold"
id="coldlink">
<h3>Cold Temps Management</h3>
</a>
</div>
<!-- Cold Card -->
<div class="collapse" id="cold">
私はいくつかの異なるJavaScriptの機能をしようとし、次のされている私が使用している機能の最新のセットです。
const mq = window.matchMedia("(min-width: 767px)");
if(mq.matches) {
document.getElementById("coldlink").href = "#cold";
} else {
document.getElementById("coldlink").href = "cold.php";
}
私は多くの異なるサイト間で読んだものから、それは767pxよりも小さい場合には、画面サイズが767px以上、"cold.php"
あるとき、このコードは"#cold"
に要素「coldlink」のhref
属性を変更する必要があります。 Howerver、このコードを(フルページで)実行し、開発ツールを使用してページを検査すると、「TypeError:document.getElementById(...)is null」というエラーメッセージが表示されます。
私は.getElementById(...)
このエラーメッセージが表示されずに他のいくつかの関数でメソッドが使用されるため、この時点でどこが間違っていたのか分かりません。
ブートストラップを使用してhref
属性を変更する方法があれば、私は上のhrefのさらに
可能な場合は、別の 'href'値とクラスとの2つのリンクを作成して、画面サイズに基づいたものを非表示にするCSSメディアクエリを使用します。 –
@Ihazkode:これはページの列レイアウトに影響しますか? – Dragonman86
あなたが修正しようとするリンクがDOMに存在する前にコードが実行されている可能性があるため、Ana Houaの答えがあなたのために働くかもしれません。ページ内のjavascriptの位置によっては、マークアップが解釈されてDOMがブラウザによって構築される前に実行されている可能性があります。 –