Zusätzlich zu der bereits gegebenen Antwort, die das OP-Problem behoben hat, könnte das OP über die Trennung von Markup und Code nachdenken und somit keinen Inline-Code innerhalb des HTML-Element-Markups verwenden.
Die Verwendung des html form
Elements, das dann spezifische Formularsteuerelemente wie input
, button
etc. hostet, ist ebenfalls sehr zu empfehlen. Making Verwendung der "DOM Level 0" Formularsammlung ist auch nicht veraltet. Die Ereignisdelegierung, wie sie im nächsten Beispiel bereitgestellt wird, hilft, wenn andere Steuerelemente dynamisch zu einem Formular hinzugefügt werden - man muss sich nicht darum kümmern, Ereignishandler für jedes neu hinzugefügte Formularsteuerelement zu registrieren. Und zuletzt, die Registrierung zu ‚Veränderung‘ Ereignissen wird jede Änderung der Radio Sammlung erfassen ...
function isMercedesTransferType(elmNode) {
return ((elmNode.type === 'radio') && (elmNode.name === 'mercedes'));
}
function handleVipTransferChange(evt) {
var elmNode = evt.target;
if (isMercedesTransferType(elmNode) && elmNode.checked) {
console.log('handleVipTransferChange [name, value] : ', elmNode.name, elmNode.value);
}
}
function initializeVipTransfer() {
document.forms['mercedes-vip-transfer'].addEventListener('change', handleVipTransferChange, false);
}
initializeVipTransfer();
.as-console-wrapper { max-height: 100%!important; top: 70px; }
<form class="form-group" name="mercedes-vip-transfer">
<legend>Mercedes VIP transfer*:</legend>
<label>
<input type="radio" name="mercedes" value="yes">
<span>Yes</span>
</label>
<label>
<input type="radio" name="mercedes" value="no">
<span>No</span>
</label>
</form>
Eine andere Art des Umgangs mit der erforderlichen Form steuert die Initialisierung direkt hiermit demonstriert wird ..
.
function isMercedesTransferType(elmNode) {
return ((elmNode.type === 'radio') && (elmNode.name === 'mercedes'));
}
function handleVipTransferChange(evt) {
var elmNode = evt.target;
if (elmNode.checked) {
console.log('handleVipTransferChange [name, value] : ', elmNode.name, elmNode.value);
}
}
function initializeVipTransfer() {
var list = document.forms['mercedes-vip-transfer'].elements['mercedes'];
Array.from(list).filter(isMercedesTransferType).forEach(function (elmNode) {
elmNode.addEventListener('change', handleVipTransferChange, false);
});
}
initializeVipTransfer();
.as-console-wrapper { max-height: 100%!important; top: 70px; }
<form class="form-group" name="mercedes-vip-transfer">
<legend>Mercedes VIP transfer*:</legend>
<label>
<input type="radio" name="mercedes" value="yes">
<span>Yes</span>
</label>
<label>
<input type="radio" name="mercedes" value="no">
<span>No</span>
</label>
</form>
... und nur, um es abzurunden, wenn es eine "up to date" DOM ist, könnte man über querySelector
und/oder querySelectorAll
...
function handleVipTransferChange(evt) {
var elmNode = evt.target;
if (elmNode.checked) {
console.log('handleVipTransferChange [name, value] : ', elmNode.name, elmNode.value);
}
}
function initializeVipTransfer() {
var list = document.querySelectorAll('#mercedes-vip-transfer [type="radio"][name="mercedes"]');
Array.from(list).forEach(function (elmNode) {
elmNode.addEventListener('change', handleVipTransferChange, false);
});
}
initializeVipTransfer();
.as-console-wrapper { max-height: 100%!important; top: 70px; }
<form class="form-group" id="mercedes-vip-transfer">
<legend>Mercedes VIP transfer*:</legend>
<label>
<input type="radio" name="mercedes" value="yes">
<span>Yes</span>
</label>
<label>
<input type="radio" name="mercedes" value="no">
<span>No</span>
</label>
</form>
die Nutzung von modernen DOM-Abfragen betrachten
'getElementByName' ist keine gültige Funktion, vielleicht Sie meinte:' getElementsByName' (mehrere Elemente) – musefan
thanks a lot musefan <3 – Dounia
ein Auge auf die Browserkonsole (F12 in den meisten Browsern) halten, wenn Probleme Debuggen, Der Fehler dort hätte das Problem für Sie aufgezeigt – musefan