最近、私は Chrome プラグイン API を使用しており、Web サイトの管理を容易にするプラグインの開発を検討しています。
今私がしたいのは、特定のチェックボックスがチェックされたときにイベントを発生させることです。このウェブサイトは私に属していないため、コードを変更できないため、Chrome API を使用しています。主な問題の 1 つは、ID ではなく名前があることです。「名前」のある特定のチェックボックスがチェックされたら、関数を起動できるかどうか疑問に思っていました。
最近、私は Chrome プラグイン API を使用しており、Web サイトの管理を容易にするプラグインの開発を検討しています。
今私がしたいのは、特定のチェックボックスがチェックされたときにイベントを発生させることです。このウェブサイトは私に属していないため、コードを変更できないため、Chrome API を使用しています。主な問題の 1 つは、ID ではなく名前があることです。「名前」のある特定のチェックボックスがチェックされたら、関数を起動できるかどうか疑問に思っていました。
簡単な答え:change
イベントを使用します。いくつかの実用的な例を次に示します。質問を読み間違えたので、プレーンな JavaScript とともに jQuery の例を含めます。ただし、jQuery を使用しても、どちらかといえば多くは得られません。
を使用しquerySelector
ます。
var checkbox = document.querySelector("input[name=checkbox]");
checkbox.addEventListener('change', function() {
if (this.checked) {
console.log("Checkbox is checked..");
} else {
console.log("Checkbox is not checked..");
}
});
<input type="checkbox" name="checkbox" />
$('input[name=checkbox]').change(function() {
if ($(this).is(':checked')) {
console.log("Checkbox is checked..")
} else {
console.log("Checkbox is not checked..")
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" />
チェックボックスのリストの例を次に示します。複数の要素を選択するquerySelectorAll
には、 の代わりに使用しquerySelector
ます。次に、 と を使用Array.filter
して、Array.map
チェックされた値を抽出します。
// Select all checkboxes with the name 'settings' using querySelectorAll.
var checkboxes = document.querySelectorAll("input[type=checkbox][name=settings]");
let enabledSettings = []
/*
For IE11 support, replace arrow functions with normal functions and
use a polyfill for Array.forEach:
https://vanillajstoolkit.com/polyfills/arrayforeach/
*/
// Use Array.forEach to add an event listener to each checkbox.
checkboxes.forEach(function(checkbox) {
checkbox.addEventListener('change', function() {
enabledSettings =
Array.from(checkboxes) // Convert checkboxes to an array to use filter and map.
.filter(i => i.checked) // Use Array.filter to remove unchecked checkboxes.
.map(i => i.value) // Use Array.map to extract only the checkbox values from the array of objects.
console.log(enabledSettings)
})
});
<label>
<input type="checkbox" name="settings" value="forcefield">
Enable forcefield
</label>
<label>
<input type="checkbox" name="settings" value="invisibilitycloak">
Enable invisibility cloak
</label>
<label>
<input type="checkbox" name="settings" value="warpspeed">
Enable warp speed
</label>
let checkboxes = $("input[type=checkbox][name=settings]")
let enabledSettings = [];
// Attach a change event handler to the checkboxes.
checkboxes.change(function() {
enabledSettings = checkboxes
.filter(":checked") // Filter out unchecked boxes.
.map(function() { // Extract values using jQuery map.
return this.value;
})
.get() // Get array.
console.log(enabledSettings);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
<input type="checkbox" name="settings" value="forcefield">
Enable forcefield
</label>
<label>
<input type="checkbox" name="settings" value="invisibilitycloak">
Enable invisibility cloak
</label>
<label>
<input type="checkbox" name="settings" value="warpspeed">
Enable warp speed
</label>
jQuery
OPにタグが表示されないため、ここにjavascriptのみのオプションがあります:
document.addEventListener("DOMContentLoaded", function (event) {
var _selector = document.querySelector('input[name=myCheckbox]');
_selector.addEventListener('change', function (event) {
if (_selector.checked) {
// do something if checked
} else {
// do something else otherwise
}
});
});
JSFIDDLEを参照してください