根据元素的数量获取 Div 的宽度并限制 mySQL 查询?

Posted

技术标签:

【中文标题】根据元素的数量获取 Div 的宽度并限制 mySQL 查询?【英文标题】:Get the Width of Div and LIMIT the mySQL query according to no of elements? 【发布时间】:2012-02-05 11:06:17 【问题描述】:

我需要显示图片的数量

<li><img class='1'><img class='1'><img class='1'></li>
<li><img class='1'><img class='1'><img class='1'></li>

但由于我的 div 会根据屏幕宽度自动增加。我需要根据 div 的宽度计算要显示的图像数量,假设宽度为 1200px 并且每个图像将是 150px 。所以要显示的图像数量是 8 。

<script type='text/javascript'>
var screen_width = document.getElementById('div_1').offsetWidth();
var no_of_images =Math.round(screen_width/100);
</script>

我正在使用 LIMIT 查询从 mysql 数据库获取图像。我想将其限制为使用 var no_of_images 获得的图像。但由于他们没有将 javascript 变量集成到 mysql 查询中的直接规则。我想将它传递给 php 变量,然后在 Mysql 中使用它。但不幸的是,我不知道该怎么做。

【问题讨论】:

【参考方案1】:

您可以使用document.ready 事件处理程序来确保 DOM 已准备好进行操作,然后向您的服务器端脚本发出 AJAX 请求,该脚本可以输出 html 以获得正确数量的图像以放置在容器中:

//wait for the `document.ready` event to fire
$(function () 

    //cache the container element since it will be used later more than once
    //also get the width of the container and figure out how many 150px wide images can fit without being clipped
    //note that this does not take into consideration any padding/margin/border for the images
    var $container   = $('#div_1'),
        screen_width = $container.width(),
        no_of_images = Math.floor(screen_width / 150);

    //create an AJAX call to your server-side script to get the image HTML
    $.ajax(
        url  : '<URL>',
        type : 'get',//or 'post'
        data :  'no_of_images' : no_of_images ,//jQuery will handle data encoding if you pass it an object
        success : function (serverResponse) 

            //now the AJAX request has returned successfully so this fades the container out, replaces it's HTML with the server response and then fades back in
            $container.fadeOut(500, function () 
                $container.html(serverResponse).fadeIn(500);
            );
        ,

        //if an error occurs with the AJAX call this is how you handle it, you may just try to re-send the AJAX call
        error   : function () 
            alert('an error occured');
        
    );
);

【讨论】:

【参考方案2】:

您可以在加载页面时将其作为获取参数传递。例如创建链接以加载下一页时,只需将其添加为参数。在初始页面加载时,您会获得所有图像,但仅显示可用分辨率所需的图像

【讨论】:

我知道这一点,但实际上这不是我需要的。有什么方法可以在 PHP 中获取 div 的偏移宽度。然后我可以解决我的问题 不,您不能从 PHP 访问它。 PHP 在服务器上运行,javascript 在客户端运行。传回内容的唯一方法是重新加载页面或进行 ajax 调用【参考方案3】:

你必须使用 AJAX。

<script type='text/javascript'>
    var screen_width = document.getElementById('div_1').offsetWidth();
    var no_of_images =Math.round(width/100);

    $.ajax(
        type: "post",
        url: "script.php",
        data: "no_of_images="+no_of_images,
        success: function()
            // do something
        
    );
</script>

你必须使用 jQuery 来让我的代码工作,因为我使用了 jQuery 方法 $.ajax()。

【讨论】:

以上是关于根据元素的数量获取 Div 的宽度并限制 mySQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章

根据最大宽度限制 SwiftUI HStack 中的视图数量

如何用js获取div下的A标签,并自动点击超链接

js如何获取div中的数据?

jQuery获取HTML元素“div”的宽度:$("div").width()

根据左div设置右div的宽度[重复]

如何根据 <div> 元素的高度或宽度更改其颜色?