У меня небольшая и неприятная проблема (хотя я думаю, что она, вероятно, небольшая и глупая), и я занимаюсь этим часами, пробуя разные способы, меняя переменные и просто пытаясь посмотреть, сработает ли это.
У меня есть объект XMLHttpRequest
и API
, который возвращает заклинания и их эффекты. Однако в функции generateSpellBody
оператор if() else()
не выполняется должным образом. Продолжаю получать результат not a spell
, как ни меняю условия, пробуя разные методы, пробовал indexOf()
, json.parse
et c. Я продолжаю получать результат условия else
только внутри test.innerHTML
const spells = 'https://{my-spells-api-and-auth-key}';
const spellBtn = document.querySelector('.spell-btn');
const spellTextBox = document.querySelector('#spell-text');
let test = document.querySelector('.test');
function getJson (url, callback) {
const xhr = new XMLHttpRequest;
xhr.open('GET', url);
xhr.onload = () => {
if (xhr.status === 200) {
let data = JSON.parse(xhr.responseText);
return callback(data);
}
};
xhr.send();
}
function generateSpellBody (data) {
data.map(dat => {
if (dat.spell === spellTextBox.value) {
console.log(dat.spell);
test.innerHTML = dat.spell;
}
else {
test.innerHTML = 'not a spell';
}
});
}
spellBtn.addEventListener('click', (e) => {
e.preventDefault();
getJson(spells, generateSpellBody);
});
HTML:
<form method='get'>
<div class="form-group">
<input type="text" class="form-control" id="spell-text" placeholder="Enter spell">
</div>
<button type="submit" class="spell-btn btn btn-default btn-light">Do spell</button>
</form>
<div class="test"></div>
Часть возвращенных данных JSON:
[
{
"_id": "5b74ebd5fb6fc0739646754c",
"spell": "Aberto",
"type": "Charm",
"effect": "opens objects"
},
{
"_id": "5b74ecfa3228320021ab622b",
"spell": "Accio",
"type": "Charm",
"effect": "Summons an object",
"__v": 0
},
{
"_id": "5b74ed2f3228320021ab622c",
"spell": "Age Line",
"type": "Enchantment",
"effect": "Hides things from younger people",
"__v": 0
},
{
"_id": "5b74ed453228320021ab622d",
"spell": "Aguamenti",
"type": "Charm",
"effect": "shoots water from wand",
"__v": 0
}
]