到目前为止,我所做的网站只会动画“var txt”中指定的文字。
我的问题是在第一个函数(typeWriter)执行完毕后尝试将以下元素(图像和一些文本)淡入。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
var i = 0;
var txt = 'Test';
var speed = 50;
window.onload = function typeWriter(callback){
if (i < txt.length){
document.getElementById("type").innerHTML += txt.charAt(i);
i++;
setTimeout(function(){typeWriter(callback)}, speed);
}else if(typeof callback == 'function'){
callback();
}
}
function fader(){
$("#fade").fadeIn("slow");
}
typeWriter(callback);
<!-- Html below -->
<div class="subSection">
<div id="fade">
<h2 id="type"></h2>
<img src="ring.jpg" alt="rings">
<p>Now comes in a range of different colours and sizes.<br>Pricing from €149.99</p>
<p><a href=order.html class="button">Buy Now</a></p>
</div>
</div>
答案 0 :(得分:1)
你走了:
function typeWriter(options) {
// Getting options or using default values
var settings = {
element: options.element,
text: options.text || "Typewriter",
speed: options.speed || 100,
complete: options.complete || function() {}
};
// Internal state
var state = {
i: 0,
len: settings.text.length
};
(function writeLetter() {
if (state.i >= state.len) return settings.complete();
settings.element.innerHTML += settings.text.charAt(state.i);
state.i++;
setTimeout(writeLetter, settings.speed);
})();
}
function fader() {
$("#fade").fadeIn("slow");
}
window.onload = function() {
// Call the function with options
typeWriter({
element: document.getElementById("type"),
text: "Hello world!",
speed: 50,
complete: fader
});
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2 id="type"></h2>
<div id="fade" style="display: none">I'm fading!</div>
答案 1 :(得分:0)
修复初始语法错误后,有一些问题需要解决。 onload将触发并传递自己的参数,而不是你想要的回调。因此,将其包装在回调函数中,并使用所选的回调函数调用该函数。或者使用onload = typeWriter.bind(null, fader)
将fader作为回调函数传递。接下来,您要在css中将#fade
元素设置为display: none
,以便它开始隐藏,然后将您的txt #type
移到淡入淡出div之外,这样它就可见了,您可以看到你做的自动输入动画。
您可以将typeWriter
定义为函数,然后在window.onload
事件中调用它:
var i = 0;
var txt = 'Test';
var speed = 50;
function typeWriter(callback){
if (i < txt.length){
document.getElementById("type").innerHTML += txt.charAt(i);
i++;
setTimeout(function(){typeWriter(callback)}, speed);
} else if(typeof callback == 'function'){
callback();
}
}
function fader(){
$("#fade").fadeIn("slow");
}
window.onload = function(){
typeWriter(fader);
}
#fade {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="subSection">
<h2 id="type"></h2>
<div id="fade">
<img src="ring.jpg" alt="rings">
<p>Now comes in a range of different colours and sizes.<br>Pricing from €149.99</p>
<p><a href=order.html class="button">Buy Now</a></p>
</div>
</div>