REPOP WEBツール倉庫

ブラウザだけで完結する便利なWEBツール、WEBアプリが沢山あります

MutationObserver()を利用したJavaScriptコードの動作確認ツール

MutationObserver()を利用したJavaScriptコードの動作確認ツール

DOMの変更(要素の追加・削除、属性変化など)を監視するMutationObserver()の動作をリアルタイムで確認できます。

プレビュー

<div class="dom-controls">
	<button type="button" id="btn-add">追加</button>
	<button type="button" id="btn-remove">削除</button>
	<button type="button" id="btn-attr">属性変更</button>
	<button type="button" id="btn-text">テキスト変更</button>
</div>

<div id="elements">
	<span class="child-node">0</span>
</div>

<div id="mutation-log"></div>
/* DOM要素 */
	#elements {
	padding: 20px;
	margin-top: 15px;
	min-height: 60px;
}

.child-node {
	display: inline-block;
	background: #2a9271;
	color: #fff;
	padding: 4px 8px;
	margin: 5px;
	border-radius: 4px;
}

.child-node.set-attribute {
	display: inline-block;
	background: #000;
	color: #fff;
	padding: 4px 8px;
	margin: 5px;
	border-radius: 4px;
}

/* ログ */
#mutation-log {
	width: 80%;
	margin-top: 20px;
	background: #222;
	color: #0f0;
	font-family: monospace;
	padding: 10px;
	height: 150px;
	overflow-y: auto;
	border-radius: 4px;
	font-size: 13px;
	line-height: 1.4;
}

.log-entry {
	border-bottom: 1px solid #333;
	padding: 2px 0;
}

.log-time {
	color: #888;
	margin-right: 8px;
}

.log-type {
	color: #ffd700;
	font-weight: bold;
	margin-right: 8px;
}
const target = document.querySelector('#elements');
const logArea = document.querySelector('#mutation-log');

// --- ボタン操作処理 ---

// 子要素を追加
document.querySelector('#btn-add').addEventListener('click', () => {
	if (!target) return;
	
	// 新しい子要素を作成
	const span = document.createElement('span');
	span.className = 'child-node';
	span.textContent = '' + (target.querySelectorAll('.child-node').length + 1);
	target.appendChild(span);
});

// 子要素を削除
document.querySelector('#btn-remove').addEventListener('click', () => {
	if (!target) return;

	// 最後の子要素を削除
	const last = target.querySelector('.child-node:last-child');
	if (!last) return;
	last.remove();
});

// 属性を変更
document.querySelector('#btn-attr').addEventListener('click', () => {
	if (!target) return;
	const children = target.querySelectorAll('.child-node');
	if (children.length === 0) return;

	// すべての子要素のclass属性を変更
	children.forEach(child => {
		const current = child.getAttribute('class');
		child.setAttribute('class', current === 'child-node set-attribute' ? 'child-node' : 'child-node set-attribute');
	});
});

// テキストを変更
document.querySelector('#btn-text').addEventListener('click', () => {
	if (!target) return;
	const children = target.querySelectorAll('.child-node');
	if (children.length === 0) return;

	// すべての子要素のテキストをランダムな英字に変更
	const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	children.forEach(child => {
		child.textContent = chars.charAt(Math.floor(Math.random() * chars.length));
	});
});


// --- MutationObserver()での監視処理 ---
const observer = new MutationObserver((mutations) => {
	mutations.forEach((mutation) => {
		const div = document.createElement('div');
		div.className = 'log-entry';

		const time = `<span class="log-time">[${new Date().toLocaleTimeString()}]</span>`;
		const type = `<span class="log-type">${mutation.type}</span>`;
		let details = '';

		if (mutation.type === 'childList') {
			const changes = [];
			if (mutation.addedNodes.length > 0) changes.push(`要素を追加: ${mutation.addedNodes.length}`);
			if (mutation.removedNodes.length > 0) changes.push(`要素を削除: ${mutation.removedNodes.length}`);
			details = changes.join(', ');
		} else if (mutation.type === 'attributes') {
			details = `属性を変更: ${mutation.attributeName}`;
		} else if (mutation.type === 'characterData') {
			details = `テキストを変更`;
		}

		// ログを出力
		div.innerHTML = `${time}${type}${details}`;
		logArea.insertBefore(div, logArea.firstChild);
	});
});

// 監視を開始(デフォルト:すべてのオプションを有効)
observer.observe(target, {
	childList: true,      // 子要素の追加・削除
	attributes: true,     // 属性の変更
	subtree: true,        // 孫要素以降も監視
	characterData: true   // テキストノードの変更
});

機能・使い方

JavaScriptのMutationObserver()を使用して、DOM要素の変化を監視するコードを生成・テストするツールです。

プレビューエリアのボタン(要素追加・削除など)を操作すると、DOM変更に対応してログが表示されます。

このツールでは、上記すべての変更を監視対象としています。

公開日 :
更新日 :
桜が舞うアニメーション ジェネレーター

桜が舞うアニメーション ジェネレーター

CSSとJavaScriptで、画面上部から風に吹かれながら優雅に舞い散る桜の花びらのアニメーションコードを生成します。

アニメーション付きハンバーガーメニュー ジェネレーター

アニメーション付きハンバーガーメニュー ジェネレーター

CSSとJavaScriptで、クリック時に3本線からバツ印へ変化するハンバーガーボタンと、画面外からスライドインするサイドメニューを自由にカスタマイズしてコード生成します。

万華鏡ジェネレーター

万華鏡ジェネレーター

CSSとJavaScriptで、Canvasを使用し幾何学模様が中心から対称に広がり色鮮やかに変化する万華鏡のような背景アニメーションを生成します。

3Dエンドロール ジェネレーター

3Dエンドロール ジェネレーター

CSSとJavaScriptで、映画のオープニングやエンディングのように画面の奥へ向かって流れる立体的な3Dテキストのスクロール演出を生成します。

モーダルウィンドウ ジェネレーター

モーダルウィンドウ ジェネレーター

CSSとJavaScriptで、表示位置、サイズ、開閉アニメーション、暗転オーバーレイの有無などを細かくカスタマイズできるモーダルウィンドウを生成します。

マトリックス風デジタルレイン ジェネレーター

マトリックス風デジタルレイン ジェネレーター

CSSとJavaScriptで、映画「マトリックス」のように上から下へとグリーンのコード文字が流れ落ちるデジタルレイン背景エフェクトを生成します。

紙吹雪が舞うアニメーション ジェネレーター

紙吹雪が舞うアニメーション ジェネレーター

CSSとJavaScriptで、指定したボタンをクリックした際などに画面内に色とりどりの紙吹雪がランダムに舞い落ちる演出を生成します。

波紋アニメーション ジェネレーター

波紋アニメーション ジェネレーター

CSSとJavaScriptで、クリックやタップした位置を中心に、同心円状の波紋が広がりながら消えていくインタラクティブなUIエフェクトを生成します。

スポットライトUI ジェネレーター

スポットライトUI ジェネレーター

CSSとJavaScriptで、マウスカーソルの動きに合わせて指定範囲をスポットライトのように明るく照らし、周囲を暗くマスクするインタラクティブなUIを生成します。

画像比較スライダー

画像比較スライダー

2枚の画像を重ねて、スライダーのドラッグ操作で左右に切り替えてビフォーアフターを比較できるインタラクティブな画像比較UIツールです。HTML/CSS/JSコードを取得できます。

もっと見る

もっと見る

JavaScript関連ツール一覧

JSONXMLJavaScriptHTMLCSSSVGPHPPython画像処理色、カラーコードテキスト
ファイルの文字化け解消ツール

ファイルの文字化け解消ツール

文字化けしてしまうテキストファイル(Shift_JISやEUC-JPなど)の文字コードを自動判定してからUTF-8にデコードし、汎用的に使えるファイルを作成します。

JSONとXMLの相互変換ツール

JSONとXMLの相互変換ツール

JSONデータとXMLデータを相互に変換します。リアルタイムでの変換や、ルート要素・子要素名の指定に対応。

水玉模様のCSSジェネレーター

水玉模様のCSSジェネレーター

背景色、ドットの色、ドットのサイズや間隔、配置パターン(格子状・千鳥状)を調整し、水玉模様(ドット背景)のCSSコードを生成します。

clamp()シュミレーター

clamp()シュミレーター

画面幅に応じて最小サイズから最大サイズまでフォントサイズを滑らかに自動スケーリングさせるCSSのclamp()コードを生成・シミュレートします。

傾いて落ちるボタンのCSSジェネレーター

傾いて落ちるボタンのCSSジェネレーター

ホバーするとぐらっと傾き、クリックすると画面外へと落下するボタン用のアニメーションCSSを生成します。

画像のフチぼかし(透過グラデーションマスク)のCSSジェネレーター

画像のフチぼかし(透過グラデーションマスク)のCSSジェネレーター

画像の端を透過グラデーションでぼかし、背景と滑らかに馴染ませるエフェクトを生成します。mask-imageを使用し、上下左右や円形など複数の方向にフェードアウト可能です。

文字の中に画像(マスクテキスト)のCSSジェネレーター

文字の中に画像(マスクテキスト)のCSSジェネレーター

指定した画像を文字の形に切り抜き、インパクトのあるテキストエフェクトを生成します。グラフィカルな見出しやタイトルの作成に適しています。

フリッカー・ネオン(点滅ネオン)のCSSジェネレーター

フリッカー・ネオン(点滅ネオン)のCSSジェネレーター

不規則な点滅を繰り返す、リアリティのあるネオンサイン文字のエフェクトを生成します。多重シャドウによる発光と透明度の変化で、レトロな雰囲気を演出します。

虹色に輝く枠線(レインボー・ローテート)のCSSジェネレーター

虹色に輝く枠線(レインボー・ローテート)のCSSジェネレーター

枠線が虹色に変化しながら回転し続ける視覚効果を生成します。conic-gradientを活用し、画像不要で軽量な実装が可能です。

ぷかぷか浮遊(フローティング演出)のCSSジェネレーター

ぷかぷか浮遊(フローティング演出)のCSSジェネレーター

要素が空中を漂うような、浮遊アニメーションを生成するツールです。

もっと見る

もっと見る

仕事、作業関連ツール一覧