Прежде всего, я просмотрел кучу, казалось бы, связанных вопросов, которые не имеют прямого отношения к моей проблеме:
javascript getElementsByClassName из переменной javascript
getElementsByClassName не выбирает все мои элементы навигации
Javascript: getElementsByClassName не предоставляет все элементы
Javascript document.getElementsByClassName не возвращает все элементы
Как изменить класс для всех элементов, полученных документом .getElementsByClassName
getElementsByClassName и jquery
Если есть другой вопрос, который уже относится к моей конкретной проблеме, я прошу прощения и, пожалуйста, направьте меня туда.
Я пытаюсь извлечь данные об открытии и текущей линии со следующей страницы: https://www.sportsbookreview.com/betting-odds/ncaa-basketball/ и возвращает данные только для определенного подмножества игр. Код ниже.
convertHalfLines = stringVal => {
let val
let halfLine = false
if (stringVal.substr(-1) === '\u00BD') {
val = parseFloat(stringVal.slice(0,-1))
halfLine = true
} else {
val = parseFloat(stringVal)
}
return halfLine ? val + (Math.sign(val) * 0.5) : val
}
let games = document.getElementsByClassName("_3A-gC")
let gameInfo = Object.keys(games).map(game => {
let teams = games[game].getElementsByClassName("_3O1Gx")
let currentLines = games[game].getElementsByClassName("_3h0tU")
console.log('currentLines',currentLines)
return {
'homeTeam': teams[1].innerText,
'awayTeam': teams[0].innerText,
'homeWagerPct': parseFloat(currentLines[1].innerText),
'awayWagerPct': parseFloat(currentLines[0].innerText),
'homeOpeningLine': convertHalfLines(currentLines[3].getElementsByClassName('_3Nv_7')[0].innerText),
'awayOpeningLine': convertHalfLines(currentLines[2].getElementsByClassName('_3Nv_7')[0].innerText),
'homeCurrentLine': convertHalfLines(currentLines[5].getElementsByClassName('_3Nv_7')[0].innerText),
'awayCurrentLine': convertHalfLines(currentLines[4].getElementsByClassName('_3Nv_7')[0].innerText),
}
})
Код возвращает данные для определенного набора игр, что само по себе несовместимо. Иногда он возвращает данные для первых шести игр, иногда для первых восьми, иногда меньше или больше этих. Есть ли что-то, чего я не знаю о JS, чего мне не хватает, или происходит что-то еще?