🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

4860閲覧

cssを変更したいです

inukujira

総合スコア130

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2021/02/17 02:46

すみません、教えてください。
cssのプロパティを動的に変更したいです。

以下のcssとHTMLがあります。

動作デモ - Stackblitz

css

1.sample { 2 background-color: pink; 3}

HTML

1<p class="sample"> 2 背景色 3</p>

HTMLに変更を加えないことを前提に背景色を変更したいです。

私が考えたのはTypeScript側でquerySelectorを使ってプロパティを取得し変更できないかと思ったんですが
値がnullで取得できず困ってます...。

TypeScript

1 foo = document.querySelector<HTMLElement>(".sample"); 2 change() { 3 console.log(this.foo); 4 // null 5 }

何か良い方法ご存じであれば教えてください。

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

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

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

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

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

m.ts10806

2021/02/17 03:09

そもそもquerySelector時点ではとれてますか? changeはどこで実行されますか? TypeScriptは詳しくないですが、一般的にそのタイミングでのthisはメソッド実行した要素になるんでは。
miyabi_takatsuk

2021/02/17 04:14 編集

Angularでやっているなら、 制御しているコンポーネントの内容と、 使用しているテンプレートHTMLのコードをなるたけ全て記載してください。 でないと回答しようがありません。 また、テンプレートHTMLにAngular構文を書いた方が、圧倒的に処理がしやすいのですが、HTMLを変えれない理由などがあるのでしょうか?
miyabi_takatsuk

2021/02/17 04:20

> TypeScriptは詳しくないですが、一般的にそのタイミングでのthisはメソッド実行した要素になるんでは。 一応、TypeScriptは、thisで、クラスないしインスタンス自身を指すことができます。 thisと宣言子の省略の場合は、クラスないしインスタンスのプロパティを参照しようとします。 といって、質問者さんが他の部分を記載されていないので、なんともいえませんが・・・。 (場合によってはその懸念もありえる)
guest

回答1

0

ベストアンサー

typescript

1import { Component } from "@angular/core"; 2 3@Component({ 4 selector: "my-app", 5 templateUrl: "./app.component.html", 6 styleUrls: ["./app.component.css"] 7}) 8export class AppComponent { 9 // foo = document.querySelector<HTMLElement>(".sample"); 10 // ここでプロパティを定義する 11 private foo: HTMLElement = null; 12 change() { 13 // HTML要素を突っ込む 14 this.foo = document.querySelector<HTMLElement>(".sample"); 15 console.log(this.foo); 16 } 17}

あとは、styleプロパティの改変でいけるかと。

もしくは、Angularでやるならば、下記のように、フレームワークの仕様を使っていく方が望ましいです。

html

1<!-- Angularの仕様においてのプロパティの変更 --> 2<p class="sample" [style.background-color]="bgC">背景色</p> 3 4<button (click)="change()">背景色を変更します</button>

typescript

1import { Component } from "@angular/core"; 2 3@Component({ 4 selector: "my-app", 5 templateUrl: "./app.component.html", 6 styleUrls: ["./app.component.css"] 7}) 8export class AppComponent { 9 // パブリック(HTMLテンプレート上でも使える)変数を定義 10 public bgC = ""; 11 change() { 12 // 文字列を定義して、背景色を変更 13 this.bgC = "#FF0000"; 14 } 15}

投稿2021/02/17 04:29

編集2021/02/17 04:48
miyabi_takatsuk

総合スコア9555

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

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

inukujira

2021/02/17 13:28

ありがとうございます!miyabi_takatsuk様のおっしゃる通りフレームワークの仕様に従って大元(HTML)を改変する事で会議で決まりました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問