代码之家  ›  专栏  ›  技术社区  ›  The Dead Man

如何显示json中的视频?

  •  1
  • The Dead Man  · 技术社区  · 7 年前

    JSON数据包含,标题,id,按钮,位置,URL

    enter image description here

    因此,如果用户从下拉列表中选择了travel,它应该会显示一个包含如下按钮的travel视频,

    enter image description here

    到目前为止,这是我尝试过的

    HTML格式

    <div class="showme"> Show dropdown
      <select id="movies-container">
         <option value="" selected disabled hidden>Choose here</option>
      </select>
    </div>
    <video src="" id="video">
          results goes here
        </video>
    

    js公司

    function PopulateDropDownList() {
               //Build an array containing movies records.
    
                var movies = [
                  {
                    "title": "travel",
                    "left": 201,
                    "top": 209,
                    "movieid": "10",
                    "movie_url": "http://techslides.com/demos/sample-videos/small.mp4",
                    "buttons": [
                      {
                        "left": 81,
                        "top": 51,
                        "start_time": 1,
                        "end_time": 2,
                        "buttonid": "10_1",
                        "btn_url": "http://techslides.com/demos/sample-videos/small.mp4"
                      }
                    ]
                  }
                ]
    
                var movieContainerID = document.getElementById("movies-container");
    
    
                //Add the Options to the DropDownList.
                for (var i = 0; i < movies.length; i++) {
                    var option = document.createElement("OPTION");
                        console.log(movies[i]);
    
    
                        // movieContainerID.prop('selectedIndex', 0);
                    //Set movie Name in Text part.
                    option.innerHTML = movies[i].title;
    
                    //Set movieId in Value part.
                    option.value = movies[i].movieid;
    
                    //Add the Option element to DropDownList.
                    movieContainerID.options.add(option);
                }
            }
            $('.showme').on('click', function(){
                 $('#movies-container').addClass('show');
                  PopulateDropDownList();
    
           });
    

    这是我正在研究的js小提琴: live demo

    0 回复  |  直到 7 年前
        1
  •  2
  •   Twisty    7 年前

    你面前有很多工作要做。不清楚你想用按钮“做”什么,你没有按钮或动作的内容。所以我暂时不打算谈这个。

    关于Select,以下是我工作的基础:

    • 更改时,使用所选内容从数据源获取更多详细信息
    • 创建了 <video> 容器或从所选内容中更新一个

    下面是一个工作示例: https://jsfiddle.net/Twisty/Lb7eh3zc/31/

    HTML格式

    <div class="showme"> Show dropdown
      <select id="movies-container">
        <option value="" selected disabled hidden>Choose here</option>
      </select>
    </div>
    <video id="show-video" style="display:none;"></video>
    

    JavaScript

    $(function() {
      var movies = [{
        "title": "travel",
        "left": 201,
        "top": 209,
        "movieid": "10",
        "movie_url": "http://techslides.com/demos/sample-videos/small.mp4",
        "buttons": [{
          "left": 81,
          "top": 51,
          "start_time": 1,
          "end_time": 2,
          "buttonid": "10_1",
          "btn_url": "http://techslides.com/demos/sample-videos/small.mp4"
        }]
      }];
    
      function PopulateDropDownList() {
        var movieContainerID = $("#movies-container");
    
        //Add the Options to the DropDownList.
        $.each(movies, function(k, v) {
          console.log(v);
          var option = $("<option>", {
            value: v.movieid
          }).html(v.title).appendTo(movieContainerID);
        });
    
        movieContainerID.change(function() {
          var movieid = $("option:selected").val();
          var movie = getMovie(movieid);
          $("#show-video").attr({
            src: movie.movie_url,
            controls: "controls",
            type: "video/mp4"
          }).show();
        });
      }
    
      function getMovie(id) {
        var m = false;
        $.each(movies, function(k, v) {
          if (v.movieid == id) {
            m = v;
          }
        });
        return m;
      }
    
      $('.showme').on('click', function() {
        $('#movies-container').addClass('show');
        PopulateDropDownList();
      });
    });
    

    我觉得把事情分成几个部分比较好。当用户单击以显示下拉列表时,它将被填充。现在用户将做出选择,并触发 change 事件。在这里我们可以决定如何处理这个选择。

    我们更新 <视频> 元素通过jQuery获得正确的源代码,然后我们展示它。

    HTML5没有办法在视频中添加按钮。你可以控制视频,开始,停止等等。。。但你不能在上面加东西。现在,yu可以创建按钮并将其浮动。如果你想让它们在特定的时间出现,你需要观察计时器并触发它们来显示。就像我说的,你前面有很长的路。

    希望这有帮助。