javascript - 至少单击其他两个按钮后,如何启用一个按钮?
问题描述
在我创建的网页上,我有四个用户可以与之交互的主要按钮: - 主页:将用户重定向到网站主页 - Twitter:引导用户完成 Twitter 身份验证过程 - Spotify:引导用户完成 Spotify 身份验证过程 - 下一步: 将用户重定向到一个新的网页
我的目标是仅在用户至少单击一次“Twitter”和“Spotify”后才启用“下一步”按钮。
我创建了一些 JavaScript 函数来跟踪用户单击 Twitter 和 Spotify 按钮的次数,以在他们至少单击这些按钮一次后尝试启用“下一步”按钮。这个功能有点不稳定,我不知道为什么。似乎该函数没有正确更新我正在运行的本地存储变量,这反过来又弄乱了“下一步”按钮的启用/禁用功能。
这是我网页的最新 HTML 版本:
// Enable Build Playlist Button
function enableBuildButton() {
if (localStorage.twitToggleCount && localStorage.spotToggleCount) {
var spotifyToggle = localStorage.getItem("twitToggleCount");
var twitterToggle = localStorage.getItem("spotToggleCount");
if (spotifyToggle && twitterToggle >= 1) {
document.getElementById("build_playlist").disabled = false;
}
}
}
//Twitter Button Toggle
function clickToggleTwitter() {
var twitToggle = document.getElementById("auth_twitter");
if (localStorage.twitToggleCount) { // Retrieve and update toggle count
var currVal = localStorage.getItem("twitToggleCount");
var updVal = +currVal + 1;
twitToggle.setAttribute("data-twit-toggle", updVal);
localStorage.setItem("twitToggleCount", updVal);
} else { // Set and update toggle count
var currVal = twitToggle.getAttribute("data-twit-toggle");
var updVal = +currVal + 1;
localStorage.setItem("twitToggleCount", updVal);
twitToggle.setAttribute("data-twit-toggle", updVal);
}
alert(localStorage.twitToggleCount);
}
// Spotify Button Toggle
function clickToggleSpotify() {
var spotToggle = document.getElementById("auth_spotify");
if (localStorage.spotToggleCount) { // Retrieve and update toggle count
var currVal = localStorage.getItem("spotToggleCount");
var updVal = +currVal + 1;
spotToggle.setAttribute("data-spot-toggle", updVal);
localStorage.setItem("spotToggleCount", updVal);
} else { // Set and update toggle count
var currVal = spotToggle.getAttribute("data-spot-toggle");
var updVal = +currVal + 1;
localStorage.setItem("spotToggleCount", updVal);
spotToggle.setAttribute("data-spot-toggle", updVal);
}
alert(localStorage.spotToggleCount);
}
// Delete all local storage variables (and or data)
function clearLocalStorage() {
localStorage.clear();
alert(localStorage.spotToggleCount);
alert(localStorage.twitToggleCount);
}
//Onclick event to redirect to build playlist web page
function navigateToBuildPlaylist() {
window.location = "http://..../build"
}
<!DOCTYPE html>
<html>
<head>
<title> Your Twitter Playlist </title>
</head>
<body>
<h1>Authentication</h1>
<p>
In order to create "Your Twitter Playlist", the application needs access to your Spotify and Twitter accounts.
</p>
<button type="button" id="home">
<a href="http://.../"> Home </a>
</button>
<button type="button" id="auth_twitter" data-twit-toggle="0" onclick="clickToggleTwitter();enableBuildButton()">
<a href="http://.../auth/twitter"> Twitter </a>
</button>
<button type="button" id="auth_spotify" data-spot-toggle="0" onclick="clickToggleSpotify();enableBuildButton()">
<a href="http://.../auth/spotify"> Spotify </a>
</button>
<button type="button" id="build_playlist" disabled="true" onclick="enableBuildButton();navigateToBuildPlaylist();clearLocalStorage();">
Next
</button>
</body>
<footer>
<p>Designed & Built by Mikal Hayden-Gates.</p>
<p>Copyright © 2019 Your Twitter Playlist. All Rights Reserved.</p>
</footer>
</html>
我希望单击“Twitter”和“Spotify”按钮后会启用“下一步”按钮,但是当页面重新加载时,它似乎会随机启用和禁用自身。有什么想法吗?
解决方案
要继续使用锚标签,请使用target="_blank" rel="noopener noreferrer"
:
<a href='/' target="_blank" rel="noopener noreferrer">Link</a>
您正在重定向,因此脚本不会运行
(或者更改为按钮并处理 javascript 中的逻辑)
推荐阅读
- coq - 向量:用两种方法从向量中取出一些元素
- c# - Serilog 依赖注入
- ios - N 个集合视图单元格 - 自动调整大小以显示屏幕中的所有单元格
- wordpress - 抛出新的错误。TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function'); 当我尝试在本地 xubuntu 上运行 wp-env 时出错
- android - Firebase 中数据库的警告消息
- rotation - 沿给定轴旋转网格,然后再次沿不同轴正确旋转
- java - 在项目或库中找不到清单中引用的类 com.example.bottomnav.ClientBottomNav
- mysql - nodejs mysql验证值是否存在
- excel - 如何在for循环中解析具有多张工作表的Excel文件
- python-3.x - Python3 无法使用 lxml.etree.find 获取 XML 元素值