Я могу получить все переключатели в операторе if и манипулировать ими. Однако в блоке else он выдает «TypeError: Невозможно установить свойство« флажок »из неопределенного» * 1001 *
У меня есть форма для двух целей. Добавить и редактировать. Когда я использую форму для редактирования, она хранит значения из состояния. Я нахожу правильную радио-кнопку, чтобы проверить и проверить это Эта часть отлично работает. когда я использую форму для добавления новых данных, я обновляю состояние компонентов по событиям изменения. Иногда последний установленный переключатель остается отмеченным, и если я не переключаю его, я не могу получить данные переключателей. Еще одна часть кода - очистить все флажки переключателей. Но он выдает «TypeError: Невозможно установить свойство« флажок »из неопределенного» Я не знаю, если это из-за React.
что не так с этим кодом?
if (formControl.buttonText === "Düzenle") {
let correctAnswer = question.correctAnswer;
let radioButtons = document.getElementsByName("cevap");
for (let i = 0; i < 4; i++) {
if (radioButtons[i].value === correctAnswer)
radioButtons[i].checked = true;
}
}
else {
let radioButtons = document.getElementsByName("cevap"); //it throws error here
for (let i = 0; i < 4; i++) {
radioButtons[i].checked = false;
}
}
Вот полный код:
import React from "react";
const AddQuestion = ({
formControl,
question,
handleView,
handleChange,
handleSubmit,
handleQuestionDelete
}) => {
//checks the radio button according to selected question for edit.
if (formControl.buttonText === "Düzenle") {
let correctAnswer = question.correctAnswer;
let radioButtons = document.getElementsByName("cevap");
for (let i = 0; i < 4; i++) {
radioButtons[i].checked = radioButtons[i].value === correctAnswer;
}
} else {//unchecks the radio buttons for addinh new data.
let radioButtons = document.getElementsByName("cevap");
for (let i = 0; i < 4; i++) {
radioButtons[i].checked = false;
}
}
return (
<div className="container">
<button className={formControl.addQuestionButton} onClick={handleView}>
Soru Ekle
</button>
<div className={formControl.visible}>
<form>
<div className="form-group">
<label htmlFor="Textarea1">Konu Seçiniz.</label>
<select
className="form-control"
id="topic"
onChange={handleChange}
value={question.topic}
>
<option value="">Seçiniz</option>
<option value="tarih">Tarih</option>
<option value="matematik">Matematik</option>
<option value="cografya">Coğrafya</option>
</select>
</div>
<div className="form-group inline-form">
<label htmlFor="puan">Soru Puanı Giriniz.</label>
<input
type="number"
step="5"
id="point"
className="form-control"
placeholder="Puan"
value={question.point}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label htmlFor="Textarea1">Soruyu Giriniz.</label>
<textarea
className="form-control"
id="questionText"
rows="2"
placeholder="Soruyu giriniz."
value={question.questionText}
onChange={handleChange}
/>
</div>
<label className="form-control">Seçenekleri Giriniz.</label>
<div className="form-group inline-form">
<div className="inline-form">
<input
type="text"
id="answer1"
className="form-control"
placeholder="Seçenek 1"
value={question.answer1}
onChange={handleChange}
/>
</div>
<div className="inline-form">
<label className="form-check-label" htmlFor="cevap">
Doğru mu?
</label>
<input
className="form-check-input"
type="radio"
name="cevap"
id="correctAnswer"
value="answer1"
onChange={handleChange}
/>
</div>
</div>
<div className="form-group inline-form">
<div className="inline-form">
<input
type="text"
id="answer2"
className="form-control"
placeholder="Seçenek 2"
value={question.answer2}
onChange={handleChange}
/>
</div>
<div className="inline-form">
<label className="form-check-label" htmlFor="cevap">
Doğru mu?
</label>
<input
className="form-check-input"
type="radio"
name="cevap"
id="correctAnswer"
value="answer2"
onChange={handleChange}
/>
</div>
</div>
<div className="form-group inline-form">
<div className="inline-form">
<input
type="text"
id="answer3"
className="form-control"
placeholder="Seçenek 3"
value={question.answer3}
onChange={handleChange}
/>
</div>
<div className="inline-form">
<label className="form-check-label" htmlFor="cevap">
Doğru mu?
</label>
<input
className="form-check-input"
type="radio"
name="cevap"
id="correctAnswer"
value="answer3"
onChange={handleChange}
/>
</div>
</div>
<div className="form-group inline-form">
<div className="inline-form">
<input
type="text"
id="answer4"
className="form-control"
placeholder="Seçenek 4"
value={question.answer4}
onChange={handleChange}
/>
</div>
<div className="inline-form">
<label className="form-check-label" htmlFor="cevap">
Doğru mu?
</label>
<input
className="form-check-input"
type="radio"
name="cevap"
id="correctAnswer"
value="answer4"
onChange={handleChange}
/>
</div>
</div>
</form>
<div className="inline-form">
<button className="button" onClick={handleSubmit}>
{formControl.buttonText}
</button>
<button
className={formControl.deleteButton}
onClick={() => {
handleQuestionDelete(question.id);
}}
>
Sil
</button>
</div>
</div>
</div>
);
};
export default AddQuestion;