【问题标题】:Using bootstrap popover to show result in it使用引导弹出窗口显示结果
【发布时间】:2014-11-13 06:01:48
【问题描述】:

这是从 Open Weather API 获取伦敦温度的代码。效果很好

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <link rel="stylesheet" type="text/css" href="css/body.css" />

        <meta name="msapplication-tap-highlight" content="no" />
    </head>
    <body>
        <script src="http://code.jquery.com/jquery-2.0.0.js"></script>
        <script language="javascript" type="text/javascript">
        <!--
            function foo(callback) {
                $.ajax({
                url: "http://api.openweathermap.org/data/2.5/weather?q=London",
                dataType: 'JSON',
                success: callback
                });
            }

            function myCallback(result) {
                var temp = JSON.stringify(JSON.parse(result.main.temp));
                var Kelvin = 272;
                var Centigrade = Math.round(temp-Kelvin);

                if (Centigrade <= 25) {
                    //alert("Temperature : "+Math.round(Centigrade)+" C");
                    var temp = document.getElementById("temp");
                    temp.style.fontSize = "20px";
                    temp.innerHTML = Centigrade+"° C , Cool&nbsp;&nbsp;&nbsp;"+"<img src= \"img/Tlogo2.svg\"/>";
                    //document.getElementById("temp").innerHTML = Centigrade+"° C , Cool&nbsp;&nbsp;&nbsp;"+"<img src= \"img/Tlogo2.svg\"/>";
                }
                else if (Centigrade > 25) {
                    var temp = document.getElementById("temp");
                    temp.style.fontSize = "20px";
                    temp.innerHTML = Centigrade+"° C , Cool&nbsp;&nbsp;&nbsp;"+"<img src= \"img/Tlogo3.svg\"/>";
                    //document.getElementById("temp").innerHTML = Centigrade+"° C , It's Hot !!! "+"<img src= \"img/Tlogo3.svg\"/>";
                }
            }
        </script>

        <div style="position: absolute; left: 30px; top: 75px;"> 
            <img src="img/temlogo.svg" width="35" height="35" onclick="foo(myCallback);"/>
        </div>

        <p id="temp"></p>
    </body>
</html>

现在我尝试使用引导程序进行一些漂亮的可视化:

<!DOCTYPE html>
<html>

    <body>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="http://code.jquery.com/jquery-2.0.0.js"></script>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
        <script language="javascript" type="text/javascript">
            $(function() {
                $("[data-toggle='popover']").popover();
            });
        </script>
    </body>
    <a href="#" tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Temperature" data-content="40C">Temperature</a>
</html>

这是可忽略的弹出框。 现在我正在尝试的是我想要将温度作为弹出元素。 IE。如果我点击图像按钮,它应该触发温度获取功能,然后在弹出框中显示温度和与之相关的图像。所以这是我面临的两个挑战。

  • 设置图像而不是红色按钮,然后是温度数据

  • 列表项和图像,即。 Tlogo2.svg 将出现在该流行音乐中 过框。

那么任何人都可以建议如何设置它?

为了更清楚,我添加了另一个代码。此处数据内容显示函数名称。但我想要函数的结果:

<!DOCTYPE html>
<html>

<body>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="http://code.jquery.com/jquery-2.0.0.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
    <script language="javascript" type="text/javascript">

//Function

function foo(callback) {
    $.ajax({
    url: "http://api.openweathermap.org/data/2.5/weather?q=London",
    dataType: 'JSON',
    success: callback
    });
}

function myCallback(result) {
var temp = JSON.stringify(JSON.parse(result.main.temp));
var Kelvin = 272;
var Centigrade = temp-Kelvin;
alert("Temperature : "+Math.round(Centigrade)+" C");
//document.getElementById("temp").innerHTML = "Temperature : "+Math.round(Centigrade)+" C";
}


$(function() {
                $("[data-toggle='popover']").popover(myCallback);
            });
    </script>
</body>
<a href="#" tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Temperature" data-content= "myCallback(result);" >Temperature</a>

</html>

请帮帮我。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap


    【解决方案1】:

    使用弹出框的选项来美化您的弹出框。使用这些选项,您可以完全控制弹出框的功能和外观。

    http://getbootstrap.com/javascript/#popovers-usage

    This fiddle 仅演示了其中的几个选项...

    Js 代码

    $(document).ready(function(){
            $(".popover-examples a").popover({
                title : 'Weather App',
                trigger: 'hover',
                template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div><img src="http://lorempixel.com/100/100" /><span>Just an example of inserting image in a Popover...</span></div>'
            });
        });
    

    HTML

    <div class="bs-example">
        <p class="popover-examples">
            <a href="#" class="btn btn-lg btn-primary" data-toggle="popover" >Popover Example</a>
        </p>    
    </div>
    

    【讨论】:

    • 如何获取函数内容?我正在尝试但没有得到我应该做的确切程度。可能我不完全了解它是如何工作的。你能在我的代码中显示我出错的地方吗?
    • 嗨,你能解释一下我的错误在哪里吗?
    • 我不能包含函数数据。你能告诉我怎么做吗?
    【解决方案2】:

    查看此demo

    function foo() {
        $.ajax({
            url: "http://api.openweathermap.org/data/2.5/weather?q=London",
            dataType: 'JSON',
            success: function(result) {
                var temp = JSON.stringify(JSON.parse(result.main.temp));
                var Kelvin = 272;
                var Centigrade = temp-Kelvin;
                var temperature = "Temperature : "+Math.round(Centigrade)+" C";
                $('span.temp-val').text(temperature);
            }
        });
    }
    
    $(document).ready(function(){
        $(".popover-examples a").popover({
            title : 'Weather App',
            trigger: 'hover',
            template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div><img src="http://lorempixel.com/100/100" /><span class="temp-val">Just an example of inserting image in a Popover...</span></div>'
        });
    
        $(".popover-examples a").hover(function() { foo(); })
    });
    

    您需要在悬停触发元素时调用 ajax 函数。此外,在模板中设置温度标识符 - 这样您就可以使用 ajax 调用将其设置为获得的值。

    【讨论】:

    • 你的小提琴奏效了。但问题是我想要的是抽象。因此,我在不同的函数中使用了 ajax 调用,并在不同的函数中显示结果,这样我就可以从不同的函数中调用查询函数,然后解析并做任何我想做的事情。我正在从我的代码和您的代码中添加一段代码,但没有发生。见编辑部分
    猜你喜欢
    • 2020-08-01
    • 2016-02-08
    • 2015-02-16
    • 2012-10-28
    • 1970-01-01
    • 2020-07-03
    • 2014-05-04
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多