質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

5576閲覧

JavaScriptで属性のみを追加したい

agepan

総合スコア66

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2017/09/03 01:18

Monacaを用いてアプリを開発しております。

OnsenUIでアプリ下部に付くタブバーを取り付けまして、タブバーの各ボタンを押すことで、それぞれのボタンに割り当てられているページを読み込んでスマホ画面に表示するという仕組みにしています。

コード的には、ボタンが押されることで<ons-tab>タグの最後に「active」という属性が追加され、この属性をもとにページの表示・非表示を切り替えているようです。

この「active」という属性を、ボタンによる操作で追加するのではなく、別途書いているJavaScript関数内から追加させたいと思っているのですが、属性と値(id="test"など)を追加したり削除したりする方法は分かるのですが、「active」という属性のみを追加させる方法が分かりません。

JavaScriptでHTMLの特定タグに属性のみを追加させる方法をご存知の方、よろしくお願いいたします。

<!--HTML--> <ons-page> <ons-tabbar position="auto" hide-tabs="false"> <ons-tab label="Tab 1" page="tab1.html" active> <!--activeが付くと画面に表示される--> </ons-tab> <ons-tab label="Tab 2" page="tab2.html"> </ons-tab> </ons-tabbar> </ons-page>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

初めに、私はMonacaを知りませんので、Monaca独自の仕様があれば、この回答は当てはまらない可能性があります。
あくまでも、「ブラウザが実装するJavaScript」の回答と解釈して下さい。
(Monaca独自の仕様はMonacaのリファレンスを確認する必要がありますし、DOMでなければこの回答は当てはまりません。)

HTML Standard

HTML Standard では属性値の存在しない記法を空属性構文と呼び、DOMの世界に移行する時に属性値が空文字として扱われます。

DOM

DOMの世界では「属性値が存在しない状態」がありません
HTMLにおいて空属性構文が存在すれば、HTML Standard の規定に従い、属性値が空文字として扱われます。
従って、「HTML文書において解釈されるDOMの世界」では下記2つの構文は等価であり、区別出来ません。

HTML

1<p data-foo>foo</p> 2<p data-foo="">foo</p>

この状態をDOMの世界で作り出すには setAttribute で空文字をセットすることになります。

JavaScript

1document.querySelector('p').setAttribute('data-foo', '');

なお、ブラウザの開発者ツールが表現するDOMツリーにおいて、これを <p data-foo> と表現するか、<p data-foo=""> と表現するか、は各々の開発者ツールの仕様に依存します。
が、そこは問題ではなく、重要なのは「HTML Standardの影響下でDOMに変換された空属性構文は、DOMの世界で属性値が空文字として扱われる」ということです。

Re: agepan さん

投稿2017/09/03 03:37

編集2017/09/05 07:50
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agepan

2017/09/05 06:36

ご回答ありがとうございます、大変勉強になります。 ということは「active」を入れるということは「active=""」を入れることと同じ事と言うことですね。従来のやり方で試してみようと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問