让javascript函数只运行一次
我正在尝试在我的网站上运行此脚本。它在视口中显示id时触发警报。问题在于,在视口中显示id时,警报会一直运行。不能让它只运行一次。我怎么能这样做让javascript函数只运行一次,javascript,html,Javascript,Html,我正在尝试在我的网站上运行此脚本。它在视口中显示id时触发警报。问题在于,在视口中显示id时,警报会一直运行。不能让它只运行一次。我怎么能这样做 function inViewport( element ){ // Get the elements position relative to the viewport var bb = element.getBoundingClientRect(); // Check if the element is outside the view
function inViewport( element ){
// Get the elements position relative to the viewport
var bb = element.getBoundingClientRect();
// Check if the element is outside the viewport
// Then invert the returned value because you want to know the opposite
return !(bb.top > innerHeight || bb.bottom < 0);
}
var myElement = document.querySelector( 'holaTest' );
// Listen for the scroll event
document.addEventListener( 'scroll', event => {
// Check the viewport status
if( inViewport( myElement ) ){
alert('hello there')
}
})
函数inViewport(元素){
//获取元素相对于视口的位置
var bb=element.getBoundingClientRect();
//检查元素是否在视口之外
//然后反转返回值,因为您想知道相反的结果
返回!(bb.top>innerHeight | | bb.bottom<0);
}
var myElement=document.querySelector('holaTest');
//收听滚动事件
document.addEventListener('scroll',event=>{
//检查视口状态
if(输入端口(myElement)){
警报('你好')
}
})
您可以这样做:添加一个控制第一时间的布尔变量
var bool=true;
function inViewport( element ){
// Get the elements position relative to the viewport
var bb = element.getBoundingClientRect();
// Check if the element is outside the viewport
// Then invert the returned value because you want to know the opposite
return !(bb.top > innerHeight || bb.bottom < 0);
}
var myElement = document.querySelector( 'holaTest' );
// Listen for the scroll event
document.addEventListener( 'scroll', event => {
// Check the viewport status
if( inViewport( myElement ) && bool){
bool=false;
alert('hello there')
}
})
var bool=true;
函数inViewport(元素){
//获取元素相对于视口的位置
var bb=element.getBoundingClientRect();
//检查元素是否在视口之外
//然后反转返回值,因为您想知道相反的结果
返回!(bb.top>innerHeight | | bb.bottom<0);
}
var myElement=document.querySelector('holaTest');
//收听滚动事件
document.addEventListener('scroll',event=>{
//检查视口状态
if(输入端口(myElement)和布尔){
布尔=假;
警报('你好')
}
})
除了Andre的答案之外,当警报在视口中时,您只能检查一次。这样,它会在元素位于视口中时发出一次警报:
函数inViewport(元素){
//获取元素相对于视口的位置
var bb=element.getBoundingClientRect();
//检查元素是否在视口之外
//然后反转返回值,因为您想知道相反的结果
返回!(bb.top>innerHeight | | bb.bottom<0);
}
var myElement=document.querySelector('.holaTest');
//收听滚动事件
var t=真;
document.addEventListener('scroll',event=>{
//检查视口状态
国际单项体育联合会(国际单项体育联合会){
警报(‘你好’);
console.log(“try”);
t=假;
}
如果(!inViewport(myElement)){
t=真;
}
})