javascript - 需要在某个时刻加载隐藏按钮
问题描述
嗨,我有一个带有 JS 代码的静态 html 页面
代码:
<script>
var questions = [
{question:"What's your first name?"},
{question:"What's your last name?"},
{question:"What's your email?", pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/},
{question:"Create your password", type: "password"},
{question:"Retype your password", type: "password"}
]
/*
do something after the questions have been answered
*/
var onComplete = function() {
var h1 = document.createElement('h1')
h1.appendChild(document.createTextNode('Thanks ' + questions[0].answer + ' for your registration!'))
setTimeout(function() {
register.parentElement.appendChild(h1)
setTimeout(function() { h1.style.opacity = 1 }, 50)
}, 1000)
}
;(function(questions, onComplete) {
var tTime = 100 // transition transform time from #register in ms
var wTime = 200 // transition width time from #register in ms
var eTime = 1000 // transition width time from inputLabel in ms
// init
// --------------
if (questions.length == 0) return
var position = 0
putQuestion()
forwardButton.addEventListener('click', validate)
inputField.addEventListener('keyup', function(e) {
transform(0, 0) // ie hack to redraw
if (e.keyCode == 13) validate()
})
previousButton.addEventListener('click', function(e) {
if (position === 0) return
position -= 1
hideCurrent(putQuestion)
})
// functions
// --------------
// load the next question
function putQuestion() {
inputLabel.innerHTML = questions[position].question
inputField.type = questions[position].type || 'text'
inputField.value = questions[position].answer || ''
inputField.focus()
// set the progress of the background
progress.style.width = position * 100 / questions.length + '%'
previousButton.className = position ? 'ion-android-arrow-back' : 'ion-person'
showCurrent()
}
// when submitting the current question
function validate() {
var validateCore = function() {
return inputField.value.match(questions[position].pattern || /.+/)
}
if (!questions[position].validate) questions[position].validate = validateCore
// check if the pattern matches
if (!questions[position].validate()) wrong(inputField.focus.bind(inputField))
else ok(function() {
// execute the custom end function or the default value set
if (questions[position].done) questions[position].done()
else questions[position].answer = inputField.value
++position
// if there is a new question, hide current and load next
if (questions[position]) hideCurrent(putQuestion)
else hideCurrent(function() {
// remove the box if there is no next question
register.className = 'close'
progress.style.width = '100%'
onComplete()
})
})
}
</script>
<style>
body {
margin: 0;
background: #fbc02d;
font-family: 'Noto Sans', sans-serif;
overflow-x: hidden;
}
h1 {
position: relative;
color: #fff;
opacity: 0;
transition: .8s ease-in-out;
}
#progress {
position: absolute;
background: #c49000;
height: 100vh;
width: 0;
transition: width 0.2s ease-in-out;
}
.center {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
#register {
background: #fff;
position: relative;
width: 550px;
box-shadow: 0 16px 24px 2px rgba(0,0,0,0.14), 0 6px 30px 5px rgba(0,0,0,0.12), 0 8px 10px -5px rgba(0,0,0,0.3);
transition: transform .1s ease-in-out;
}
#register.close {
width: 0;
padding: 0;
overflow: hidden;
transition: .8s ease-in-out;
box-shadow: 0 16px 24px 2px rgba(0,0,0,0);
}
#forwardButton {
position: absolute;
right: 20px;
bottom: 5px;
font-size: 40px;
color: #fbc02d;
float: right;
cursor: pointer;
z-index: 20
}
#previousButton {
position: absolute;
font-size: 18px;
left: 30px; /* same as padding on container */
top: 12px;
z-index: 20;
color: #9e9e9e;
float: right;
cursor: pointer;
}
#previousButton:hover {color: #c49000}
#forwardButton:hover {color: #c49000}
.wrong #forwardButton {color: #ff2d26}
.close #forwardButton, .close #previousButton {color: #fff}
#inputContainer {
position: relative;
padding: 30px 20px 20px 20px;
margin: 10px 60px 10px 10px;
opacity: 0;
transition: opacity .3s ease-in-out;
}
#inputContainer input {
position: relative;
width: 100%;
border: none;
font-size: 20px;
font-weight: bold;
outline: 0;
background: transparent;
box-shadow: none;
font-family: 'Noto Sans', sans-serif;
}
#inputLabel {
position: absolute;
pointer-events: none;
top: 32px; /* same as container padding + margin */
left: 20px; /* same as container padding */
font-size: 20px;
font-weight: bold;
transition: .2s ease-in-out;
}
#inputContainer input:valid + #inputLabel {
top: 6px;
left: 42px; /* space for previous arrow */
margin-left: 0!important;
font-size: 11px;
font-weight: normal;
color: #9e9e9e;
}
#inputProgress {
border-bottom: 3px solid #fbc02d;
width: 0;
transition: width .6s ease-in-out;
}
.wrong #inputProgress {
border-color: #ff2d26;
}
@media (max-width: 420px) {
#forwardButton {right: 10px}
#previousButton {left: 10px}
#inputLabel {left: 0}
#inputContainer {padding-left: 0; margin-right:20px}
}
</style>
<head>
<link href='https://fonts.googleapis.com/css?family=Noto+Sans:400,700' rel='stylesheet' type='text/css'>
<link href='https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css' rel='stylesheet' type='text/css'>
</head>
<div id="progress"></div>
<div class="center">
<div id="register">
<i id="previousButton" class="ion-android-arrow-back"></i>
<i id="forwardButton" class="ion-android-arrow-forward"></i>
<div id="inputContainer">
<input id="inputField" required multiple />
<label id="inputLabel"></label>
<div id="inputProgress"></div>
</div>
</div>
</div>
最后加载文本消息的注册表单页面。从那里我需要在文本下方加载一个按钮。以前隐藏的按钮。
任何帮助表示赞赏。
编辑:JS 代码是我页面上的结束进程。用户将填写表格,将加载短信,一切都到此结束。
我想加载一个按钮(这里没有按钮代码,因为我不知道我应该怎么做)
按钮应该加载到文本下方,在文本加载之后。所以用户可以继续到另一个页面。
我得到了一些答案,谢谢你帮助我。我不擅长编码,也不知道具体怎么称呼,
所以如果您也可以给我一个带有按钮 ID 的 html 代码,我将不胜感激
目的是通过点击功能预览该文本下方的按钮到外部 URL。
非常感谢。
解决方案
var onComplete = function() {
var btn=document.createElement('button');
btn.type='button';
btn.id='btnProceed';
btn.innerText='Proceed';
btn.addEventListener('click',function(e){
// do something
},false);
var h1 = document.createElement('h1');
h1.innerText=`text ${questions[0].answer} text!`;
h1.appendChild(btn);
setTimeout(function() {
register.parentElement.appendChild(h1);
setTimeout(function() { h1.style.opacity = 1 }, 50);
}, 1000);
}
然后您可以使用该按钮的 ID 来捕捉点击并重定向到下一页。
推荐阅读
- javascript - 如何处理基于不同 ES 版本的多个 Webpack 构建?
- python - 在 pandas 中使用列名加入
- jquery - 防止机器人向公共 Web 服务发送垃圾邮件
- amazon-web-services - 需要添加一个变量来代替分支名称
- ios - 双击可以工作,但双击不能通过 iOS 中的 UITapGestureRecognizer 工作
- python - lambda函数中的元组含义
- java - 返回在数组中只出现一次的元素
- sql - 尝试每月计算 2000 ,但收到错误“ORA-00904: "MONTH": invalid identifier"
- python - 在电报机器人库中获取用户 ID
- typescript - 界面中的new关键字是什么意思