无法在Jquery中调用函数

时间:2017-10-24 19:05:31

标签: javascript jquery html web

我只是抓住了一些Jquery:

我有这个代码(由于某种原因不能在小提琴中工作),我自己做了一半但是从另一个好人那里获得了大部分代码:

from tkinter import *

def main():
    root = Tk()
    root.grid_columnconfigure(1,weight=1) # the text and entry frames column
    root.grid_rowconfigure(0,weight=1) # all frames row

    buttonframe = Frame(root)
    buttonframe.grid(row=0, column=0, sticky="nswe")
    entry_text_frame = Frame(root)
    entry_text_frame.grid(row=0, column=1, sticky="nswe")
    entry_text_frame.grid_columnconfigure(0,weight=1) # the entry and text widgets column
    entry_text_frame.grid_rowconfigure(1,weight=1) # the text widgets row

    button1 = Button(buttonframe, text='one', width=8)
    button1.grid(row=0, column=0, sticky='nswe')
    button2 = Button(buttonframe, text='two', width=8)
    button2.grid(row=1, column=0, sticky='nswe')

    entry1 = Entry(entry_text_frame)
    entry1.grid(row=0, column=0, sticky='nswe')

    text1 = Text(entry_text_frame, highlightbackground='black', highlightthickness=1)
    text1.grid(row=1, column=0, sticky='news')

    root.geometry("300x400")

if __name__ == '__main__':
    main()

我正在使用它将一堆iframe视频放入一个div中,因为当它们制作时(通过我创建的程序),它们都被放入一个单独的视频框架中。 div,你可以通过查看我插入的代码来想象。 这使得在CSS中设置它的风格非常烦人,现在已经与它斗争了几天..

问题:

该函数正在运行,它确实将所有.videoframe div和所有内容放入#videocontainer div中。但我无法调用该函数,除非我使用.click,我希望在用户加载页面时调用该函数(如果可能的话,只有一次),如下所示:

<script>
$('button#test').click(function(){
    var videos = $('div.videoframe').get();
    $('div#videocontainer').html($(videos));
});
</script>

然而,这也不起作用。

这里的任何人都知道如何解决它/什么是错的?如果没有 - 也许是将视频放入div的不同方式,它们来自这个脚本:

<script>
$(document).ready(function(){
    var videos = $('div.videoframe').get();
    $('div#videocontainer').html($(videos));
});
</script>

1个脚本= 1个视频。我体内会有一堆这样的东西。

解决

通过为函数设置超时来计算它。

编辑:好吧,显然,这也需要你在<script> $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=mxHB21dKmkw&key=[you are not getting my key :)]', function(data){ $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=snippet&id=mxHB21dKmkw&key=[you are not getting my key :)]', function(data2){ {$('body').append('<div class = videoframe><iframe src=https://www.youtube.com/embed/XGSy3_Czz8k allowfullscreen = allowfullscreen class = video></iframe><div class = counter>'+data.items[0].statistics.viewCount +'</div><div class = title>'+ data2.items[0].snippet.title+'</div></div></div>');} }); }); </script> 标签和<script>的开头之间放置间距,就像这样(Jquery是一种有趣的语言???):

setTimeout()

2 个答案:

答案 0 :(得分:0)

确保脚本包含&#34; $。getJSON&#34;在页面上的另一个脚本之前。

然后尝试将代码修改为:

<script>
    $('document').ready(function(){
         // Also I'm not sure if you'll need the .get()
        var videos = $('div.videoframe').get();
        $('div#videocontainer').html('<div>' + videos + '</div>');
    });
</script>

答案 1 :(得分:0)

好吧,当然,我刚刚在谷歌过去2天的时候在stackoverflow上发帖后首先想出来。 显然,为函数设置超时使其工作,如下所示:

<script>

    setTimeout(function() {
         // Also I'm not sure if you'll need the .get()
        var videos = $('div.videoframe').get();
        $('div#videocontainer').html(videos);
    }, 2000)
</script>
无论如何,谢谢你们:)