2016-09-25 13 views
2

これは基本的な質問かもしれませんが、htmlの<hr>タグと同様に、JavaScriptでは水平線(横の規則)をどうやって作成しますか? <hr>タグが私に許可する方法とまったく同じように、その色と厚さを設定できるようにしたい。JSを使用して水平ルールを描画する

<script>タグ内にこれを行う必要があるウェブサイトがあります(付随するコードもあります)。私のユーザの中にはJSが有効になっていないので、私は<hr>を使うことはできません。だから、<script>のタグの内容は表示されませんが、<hr>はまだ表示されます(そして、私はそれが起こることを望んでいません)。

+2

''ブロック内にCSS 'display:none;'を付けて '


'を使用したことがありますか? –

+0

@ AdamD.Ruppe:謝罪、私は実際それを知らない。それを答えとして追加できますか? – Sophia111

+0

サンプルでいくつかのテクニックを使って答えました。一般的に言えば、私はいつも必要なもののために働くプレーンでシンプルなHTMLを書こうとします。その後、javascript、css、またはnoscript要素でカスタマイズして特殊なケースをカバーします。そのようにすれば、読みやすいソースコードと優れた互換性が得られる傾向があります。基本的なhtmlは、ほぼすべての人に利用できます! –

答えて

1

まず、問題への取り組み:

を私のユーザーの一部は、JSが有効になっていないので、私は<hr>を使用することはできません。だから、<script>のタグの内容は表示されませんが、<hr>はまだ表示されます(そして、私はそれが起こることを望んでいません)。

(あなたはIE 9のサポートを必要としない場合 classListで)あなたはJavaScriptであなたの <html>要素にクラスを追加することができます

document.documentElement.className += ' has-js'; 

、その後はJavaScriptがサポートされていない限り、表示されないように、あなたの<hr>のスタイル:

<hr class="hey-that’s-my-line" /> 
.hey-that’s-my-line { 
    display: none; 
    /* change its height & colour here */ 
} 

html.has-js .hey-that’s-my-line { 
    display: block; 
} 

今、あなたの質問に答える:あなたは要素を作成し、私ことができますそれらをDOM APIを使用して文書に挿入します。この答えでは完全にカバーするのが少しですが、MDNにはa good introductionがあります。

var hr = document.createElement('hr'); 

document.body.appendChild(hr); // inserts it at the end of <body>; 
           // appendChild() inserts at the end of any node, 
           // generally 

var ref = document.getElementById('reference-point'); 

ref.parentNode.insertBefore(hr, ref); // inserts it before the element 
             // with the id 'reference-point' 
0

あなただけのJavaScriptを使用して、ページ上のHR要素を作成したい場合は、以下のように、それはです:

elem = document.createElement("hr"); //this will create a new element 

/* Use setAttribute to define the property and values you'd like give the element */ 

    elem.setAttribute("width", "100px"); 

/* Then you'll need to add the element to the page */ 

document.body.appendChild(elem); 
+0

JSは一部のユーザーには利用できないとの質問があります。 – Brad

+0

@ライアンああ、私は疑問を誤解しました。ありがとう。 – Brad

0

あなたはnoscript要素ユーザーからそれを隠すために、いくつかのCSSと標準<hr>要素を使用することができます。

これを見てください:http://arsdnet.net/testo.html JavaScriptの有無にかかわらず。ここでは、コードです:

<!DOCTYPE html> 
<html> 
<head> 
     <title>Noscript example</title> 
     <style> 
       /* this css is used by people with and without javascript */ 
       /* a <link> tag would work as well, of course */ 
     </style> 
     <noscript> 
       <style> 
         /* this is only visible by people without JS enabled */ 
         hr { 
           display: none; 
         } 
       </style> 
     </noscript> 
     <script> 
       /* And this script only runs with JS (obviously) so by adding 
        a class name to the root element (<html>), we can also detect 
        it in CSS.... 
       */ 
       document.documentElement.className += " with-js"; 
     </script> 
     <style> 
       /* ...meaning we can target it with CSS like this too: */ 
       html.with-js hr { 
         color: red; 
       } 
     </style> 
</head> 
<body> 
     Hi, before hr 
     <hr /> 
     After hr 
</body> 
</html> 

<noscript>タグがwaaaaayバックから有効なHTMLで、どこでも動作します。その中にあるものは、スクリプトをサポートしていないユーザーにしか表示されず、フォールバックHTML、リンクタグ、スタイルタグなどのコンテンツを保持できます。

スタイルタグを入れることで、スクリプト以外のユーザーには見せたくない要素をCSSで隠すことができます。

それで、私はそれの下に普通のHTMLを書いています。これは普通にすべてのユーザーに見えるでしょう - そこに特別なものは何もありません。その後、<noscript><style>を使用して、私は特別なケースとしてスクリプトなしで人々のためにそれを変更します。

時には、btwを使用すると、スクリプト以外のユーザーからのものを非表示にするのではなく、スクリプトのユーザーにのみ表示することができます。これを行う最も簡単な方法は、javascriptを使用してhtml要素にクラスをスティックし、そのクラス名の子孫をCSSでターゲットにすることです。サンプルの次の数行はそれを示しています。繰り返しますが、通常のHTMLを作成してから実際に修正しますが、今度は<script>とクラスを追加して<style>を組み合わせて組み合わせます。

JSでこのページを見ると、赤い時間が表示されます。 JSがなければ、時間は表示されません。

関連する問題