Лучший способ получить элементы в JS, чем getElementById? [закрыто]

Метод destroy ¹ SessionsController содержит следующую строку:

signed_out = Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)

Метод sign_out_all_scopes ² вызывает warden.logout без каких-либо аргументов, а вызов метода sign_out ³ warden.logout(scope).

Документация метода logout ⁴ гласит:

# Logout everyone and clear the session
env['warden'].logout

# Logout the default user but leave the rest of the session alone
env['warden'].logout(:default)
blockquote>

Заключение: sign_out должен сохранять сеанс при задании определенный объем. Однако я не вижу никакого способа сделать это. sign_out_all_scopes всегда всегда называется первым и будет возвращать только false, если он не смог зарегистрировать пользователя.

Я рекомендую либо опубликовать запрос функции на их трекер проблемы или разработка собственного решения для проверки подлинности. Rails теперь предоставляет has_secure_password , и в эти дни люди, похоже, собираются для последнего, чтобы избежать столкновения с этими проблемами.


¹ Devise::SessionsController#destroy

² Devise::Controllers::Helpers#sign_out_all_scopes

³ Devise::Controllers::Helpers#sign_out

Warden::Proxy#logout

-5
задан The Nuthouse 13 April 2019 в 04:58
поделиться

2 ответа

В вашем примере используйте querySelectorAll с селектором атрибута :

//Get elements with an id that starts with graph-points-
let graphPoints = document.querySelectorAll('[id^=graph-points-]');
console.log(graphPoints);
<div id="graph-points-x">
  <div id="p0">0</div>
  <div id="x1">1</div>
  <div id="x2">2</div>
  <div id="x3">3</div>
  <div id="x4">4</div>
  <div id="x5">5</div>
  <div id="x6">6</div>
  <div id="x7">7</div>
  <div id="x8">8</div>
  <div id="x9">9</div>
</div>
<div id="graph-points-y">
  <div id="y1">1</div>
  <div id="y2">2</div>
  <div id="y3">3</div>
  <div id="y4">4</div>
  <div id="y5">5</div>
  <div id="y6">6</div>
  <div id="y7">7</div>
  <div id="y8">8</div>
  <div id="y9">9</div>
</div>
[115 ]

0
ответ дан Jon P 13 April 2019 в 04:58
поделиться

Если вам не нужно ориентироваться на IE7 и ниже, document.querySelectorAll('[id^="graph-points"]') - это то, что вам нужно.

Я бы по-прежнему рекомендовал добавить класс в родительские контейнеры, чтобы вы могли использовать более простой селектор, так как таргетинг на идентификаторы, начинающиеся с определенной строки, не является оптимальным решением.

См. https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll для получения дополнительной информации

.
0
ответ дан Capsule 13 April 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: