Функция Javascript для получения всех элементов из getElementsByClassName - PullRequest
0 голосов
/ 26 ноября 2018

Перво-наперво, я посмотрел на кучу, казалось бы, связанных вопросов, которые не имеют прямого отношения к моей проблеме:

javascript getElementsByClassName из переменной javascript

getElementsByClassName не выбирает все мои элементы навигации

Javascript: getElementsByClassName не дает все элементы

Javascript document.getElementsByClassName не возвращаетсявсе элементы

Как изменить класс для всех элементов, извлеченных document.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, которого мне не хватает, или что-то еще происходит?

...