Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 触发循环生成的多个弹出窗口_Javascript_Html - Fatal编程技术网

Javascript 触发循环生成的多个弹出窗口

Javascript 触发循环生成的多个弹出窗口,javascript,html,Javascript,Html,我想在从数据库获取记录的循环中显示一条警报消息。问题是,弹出窗口只对一个项目有效,而另一个项目没有显示弹出窗口 怎么了 PHP: CSS: .item{ 宽度:100px; 文本对齐:居中; 显示:块; 背景色:透明; 边框:1px实心透明; 右边距:10px; 边缘底部:1px; 浮动:左; } #索引库{ 宽度:50px; } /*弹出式容器*/ .弹出窗口{ 位置:相对位置; 显示:内联块; 光标:指针; } /*实际弹出窗口(显示在顶部)*/ .popup.popuptext{ 可见性:

我想在从数据库获取记录的循环中显示一条警报消息。问题是,弹出窗口只对一个项目有效,而另一个项目没有显示弹出窗口

怎么了

PHP:

CSS:

.item{
宽度:100px;
文本对齐:居中;
显示:块;
背景色:透明;
边框:1px实心透明;
右边距:10px;
边缘底部:1px;
浮动:左;
}
#索引库{
宽度:50px;
}
/*弹出式容器*/
.弹出窗口{
位置:相对位置;
显示:内联块;
光标:指针;
}
/*实际弹出窗口(显示在顶部)*/
.popup.popuptext{
可见性:隐藏;
宽度:160px;
背景色:#555;
颜色:#fff;
文本对齐:居中;
边界半径:6px;
填充:8px0;
位置:绝对位置;
z指数:1;
底部:125%;
左:50%;
左边距:-80px;
}
/*弹出箭头*/
.popup.popuptext::after{
内容:“;
位置:绝对位置;
最高:100%;
左:50%;
左边距:-5px;
边框宽度:5px;
边框样式:实心;
边框颜色:#555透明;
}
/*单击弹出窗口容器时切换此类(隐藏并显示弹出窗口)*/
.popup.show{
能见度:可见;
-网络工具包动画:Fadein1s;
动画:Fadein1s
}
/*添加动画(在弹出窗口中淡入淡出)*/
@-webkit关键帧fadeIn{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
@关键帧淡入淡出{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
在HTML中添加到文档中,这意味着您不能在循环中重复它。我建议改用a,这样可以重复

您需要弹出与单击的元素相关联的元素(嵌套在其中)。我向每个单击后将触发处理程序函数的
.popop
推荐。函数应该通过使用并切换其“show”类来查找单击元素中的弹出文本

下面是一个基本示例:

//定义一个函数来显示弹出窗口的弹出文本。
函数popItUp(){
这个.querySelector('.popuptext').classList.toggle(“show”);
}
//定义所有弹出窗口元素。
让popups=document.querySelectorAll('.popup');
//将侦听器添加到每个弹出元素中,该元素将处理程序函数绑定到click事件。
弹出窗口。forEach(
popup=>popup.addEventListener('click',popItUp)
);
/*
//上述箭头功能相当于:
forEach(函数(弹出窗口){
popup.addEventListener('click',popItUp);
});
*/
.item{
宽度:100px;
文本对齐:居中;
显示:块;
背景色:透明;
边框:1px实心透明;
利润率:80px050px;
浮动:左;
}
.弹出窗口{
位置:相对位置;
光标:指针;
}
.popup.popuptext{
可见性:隐藏;
宽度:160px;
背景色:#555;
颜色:#fff;
文本对齐:居中;
边界半径:6px;
填充:8px0;
位置:绝对位置;
z指数:1;
底部:125%;
左:50%;
左边距:-80px;
}
.popup.popuptext::after{
内容:“;
位置:绝对位置;
最高:100%;
左:50%;
左边距:-5px;
边框宽度:5px;
边框样式:实心;
边框颜色:#555透明;
}
.popuptext.show{
能见度:可见;
-网络工具包动画:Fadein1s;
动画:Fadein1s
}
@-webkit关键帧fadeIn{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
@关键帧淡入淡出{
从{
不透明度:0;
}
到{
不透明度:1;
}
}

弹出消息1
当前预订

弹出消息2 当前预订

弹出消息3 当前预订

在HTML中添加到文档中,这意味着您不能在循环中重复它。我建议改用a,这样可以重复

您需要弹出与单击的元素相关联的元素(嵌套在其中)。我向每个单击后将触发处理程序函数的
.popop
推荐。函数应该通过使用并切换其“show”类来查找单击元素中的弹出文本

下面是一个基本示例:

//定义一个函数来显示弹出窗口的弹出文本。
函数popItUp(){
这个.querySelector('.popuptext').classList.toggle(“show”);
}
//定义所有弹出窗口元素。
让popups=document.querySelectorAll('.popup');
//将侦听器添加到每个弹出元素中,该元素将处理程序函数绑定到click事件。
弹出窗口。forEach(
popup=>popup.addEventListener('click',popItUp)
);
/*
//上述箭头功能相当于:
forEach(函数(弹出窗口){
popup.addEventListener('click',popItUp);
});
*/
.item{
宽度:100px;
文本对齐:居中;
显示:块;
背景色:透明;
边框:1px实心透明;
利润率:80px050px;
浮动:左;
}
.弹出窗口{
位置:相对位置;
光标:指针;
}
.popup.popuptext{
可见性:隐藏;
宽度:160px;
背景色:#555;
颜色:#fff;
文本对齐:居中;
边界半径:6px;
填充:8px0;
位置:绝对位置;
z指数:1;
底部:125%;
左:50%;
左边距:-80px;
}
.popup.popuptext::after{
内容:“;
位置:绝对位置;
最高:100%;
左:50%;
左边距:-5px;
边框宽度:5px;
边框样式:实心;
边框颜色:#555透明;
}
.popuptext.show{
能见度:可见;
-网络工具包动画:Fadein1s;
动画:Fadein1s
}
@-webkit关键帧fadeIn{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
@关键帧淡入淡出{
从{
不透明度:0;
}
到{
不透明度:1;
}
}

弹出消息1
当前预订

弹出消息2 当前预订

弹出消息3 当前预订


在HTML中,
id
属性在文档中是唯一的<代码>文档。getElementById()将始终只返回一个元素

解决问题的一个方法是给每个pop
$query = "SELECT * FROM discount
          WHERE consecutivedays <=  DATEDIFF('$date2','$date1')
                AND idbeach = '$idbeach'
          ORDER BY consecutivedays desc
          LIMIT 1";

$results = mysqli_query($conn, $query);

while($row = $results->fetch_assoc()){

    $reserved= $row['discountperc'];

    if ($reserved=="yes") {

        $getbooking = new WA_MySQLi_RS("getbooking",$sis,1);

        $getbooking->setQuery("SELECT `name`,
                                      CONCAT(`datein`,' - ',`dateout`) AS dates,
                                      price,discount,comment
                               FROM booking
                               where idseatbeach = '$idseatbeach'
                               order by datein limit 1");

        $getbooking->execute();
        $name=$getbooking->getColumnVal("name");
        $dates=$getbooking->getColumnVal("dates");
        $price=$getbooking->getColumnVal("price");  
        $discount=$getbooking->getColumnVal("discount");    
        $comment=$getbooking->getColumnVal("comment");  
        $message = "Booked by: $name\n
                    Date range: $dates\n
                    Price :$price\n
                    Discount :$discount\n
                    Comment :$comment";

        ?>
        <div class="item" >
            <div class="popup" onclick="myFunction()">
                <span class="popuptext" id="myPopup"><?php echo $message;?></span>
                <img src="images/umbrelladisactive.png" width="35" height="35" 
                    alt="<?php echo $nameseat; ?> "/>
                <p style="margin-right: 0px; color: blue;">Currently Booked</p>
            </div>
        </div>
       <?php

   }
}
$id = 0;
while($row = $results->fetch_assoc()){
    $id++;
<div class="popup" onclick="myFunction('myPopup<?php echo $id; ?>')">
    <span class="popuptext" id="myPopup<?php echo $id; ?>"><?php echo $message;?></span>
function myFunction(elementId) {
    var popup = document.getElementById(elementId);
    popup.classList.toggle("show");
}