ChatGPTにjQueryをJavascriptに変換して貰った結果

2023-02-24ChatGPT プログラム,ChatGPT

ChatGPTにjQueryをJavascriptに変換して貰った結果

OpenAIの対話型AIモデル「ChatGPT」にいくつかのjQueryのコードをJavascriptに変換して貰ってみました。

確認環境
  • ChatGPT バージョン:Jan 30 Version

AIにjQueryコードをJavascriptに変換して貰った結果

以下は「ChatGPT」にjQueryをJavascriptに変換して貰った結果になります。

クリックイベントはJavascriptに変換できるのか

まず、クラス名から親要素のidを取得するjQueryコードを変換してもらいます。

関連:jQuery | 要素やその親子要素からid・class名を取得するパターンまとめ | ONE NOTES

以下のjQueryをJavascriptに変換して下さい。

$('.class-name').click(function () {
	let getId = $(this).parent().attr('id')
})

以下は、jQueryからJavaScriptへの変換例です。

document.querySelectorAll('.class-name').forEach(function(element) {
  element.addEventListener('click', function() {
    let getId = this.parentNode.id;
  })
});

このコードは、クラス名が「class-name」であるすべての要素に対して、クリックイベントを追加し、クリックされた要素の祖先の2つ上の要素のIDを取得しています。querySelectorAllメソッドを使用して要素を取得し、forEachメソッドを使用して各要素に対してaddEventListenerメソッドを呼び出しています。また、クリックされた要素を表すthisキーワードを使用するのではなく、element変数を使用して要素を参照しています。

マウスホバーイベントはJavascriptに変換できるのか

やはり、余裕そうですね。次はhover()にてマウスホバーイベントを実装するサンプルコードを変換して貰いました。

関連:jQuery | 要素にマウスホバーイベントを実装する方法 | ONE NOTES

$('#target').hover(
	function () {
		$('#target').css('background', '#cd5c5c')
	},
	function () {
		$('#target').css('background', '#20b2aa')
	}
)

このコードをJavaScriptに変換すると以下のようになります。

var target = document.getElementById('target');
target.addEventListener('mouseenter', function() {
  target.style.background = '#cd5c5c';
});
target.addEventListener('mouseleave', function() {
  target.style.background = '#20b2aa';
});

最初に、 getElementById() メソッドを使用して、 idtarget の要素を取得します。次に、 addEventListener() メソッドを使用して、 mouseenter イベント(マウスが要素内に入ったとき)と mouseleave イベント(マウスが要素から出たとき)に対するイベントリスナーを追加します。

イベントリスナー内では、 this を使用してマウスイベントが発生した要素にアクセスし、 style プロパティを使用して要素のスタイルを変更します。 hover() メソッドである2つのコールバック関数を使用して、jQueryのコードをJavaScriptに置き換えます。

jQueryプラグインが必要なコードはJavascriptとして変換できるのか

ChatGPTはデータベースみたいなものでもありますし、コードの説明が上手ですね。
では、jQueryプラグインが必要なコードはどうでしょうか?

関連:jQuery | フォームの残り入力可能文字数を表示するプラグイン「jquery.maxlength.js」の使い方 | ONE NOTES

$('#name').maxlength({
	'feedback': '#name-maxlength';
});

$('#text').maxlength({
	'feedback': '#text-maxlength';
});

このコードは、 maxlength プラグインを使用して、テキストエリアに入力できる最大文字数を制限し、ユーザーに残りの文字数を表示するものです。このプラグインはjQueryに依存しており、同じ機能をJavaScriptのみで実装するのは非常に手間がかかります。したがって、以下にはjQueryを使用したコードが示されています。

$('#name').maxlength({
	'feedback': '#name-maxlength';
});

$('#text').maxlength({
	'feedback': '#text-maxlength';
});

これらのコードでは、 maxlength プラグインが nametext のIDを持つテキストエリアに適用され、残りの文字数を表示するための要素のIDが name-maxlength および text-maxlength であることが指定されています。

プラグインのパラメーターをオプションで渡すことができ、ここでは feedback パラメーターが #name-maxlength および #text-maxlength のIDを持つ要素に設定されています。このパラメーターは、ユーザーが入力するたびにテキストエリアに残りの文字数を表示するために使用されます。

プラグイン「jquery.maxlength.js」が必要なコードではあったためか、殆ど同じjQueryコードを返してきただけでした。同じ動作をJavascriptで作成する事は特に煩雑なコードじゃなくても割とシンプルに作成できますので、来年くらいには普通にJavascriptコードを返してくるかもですね。

テキストの入力を動的に取得するコードはJavascriptに変換できるのか

関連:jQuery | テキストフォームやテキストエリアの入力を動的に取得・表示する方法 | ONE NOTES

$('#input').on('input', function () {
	$('#output').html($('#input')[0].value);
});

このコードは、 input イベントを監視し、入力されたテキストを別の要素に表示するものです。このコードをJavaScriptに変換すると以下のようになります。

var input = document.getElementById('input');
var output = document.getElementById('output');
input.addEventListener('input', function() {
	output.innerHTML = input.value;
});

最初に、 getElementById() メソッドを使用して、 idinputoutput の要素を取得します。次に、 addEventListener() メソッドを使用して、 input イベントに対するイベントリスナーを追加します。

イベントリスナー内では、 input 要素の値を取得し、 innerHTML プロパティを使用して、 output 要素に表示します。jQueryの .on() メソッドは、JavaScriptの addEventListener() メソッドに相当します。また、jQueryの .html() メソッドは、JavaScriptの innerHTML プロパティに相当します。

ChatGPTに、いくつかの簡単なjQueryをJavascriptに変換して貰ったところ、全く問題ないコードが返ってきました。

気になる点といえば、querySelector()querySelectorAll()を使うのか、getElementById()やgetElementsByClassName()を使うのかは、決まっていないといったところでしょうか。

プラグインが必要なコードの場合、有名なプラグインであれば機能を把握しているようですが、簡単なコードであっても、そのプラグインのコードまでは参照しないようですね。