Javascript 如何对动态项使用onhashchange

Javascript 如何对动态项使用onhashchange,javascript,jquery,html,url,hashchange,Javascript,Jquery,Html,Url,Hashchange,因此,我在一个网页上有两个选择框,但在不同的锚中(一个在页面上,另一个在iframe中),我试图获取代码来检测它在哪个锚中,然后将该框中的选择值中继到一个链接。这是我的密码: function locationHashChanged() { if (location.hash === "#player") { function setText(text) { var selectVal = text; var url = $

因此,我在一个网页上有两个选择框,但在不同的锚中(一个在页面上,另一个在iframe中),我试图获取代码来检测它在哪个锚中,然后将该框中的选择值中继到一个链接。这是我的密码:

function locationHashChanged() {
    if (location.hash === "#player") {
        function setText(text) {
            var selectVal = text;
            var url = $('twitter').attr("href");
            url = 'https://twitter.com/intent/tweet?button_hashtag=stream&text=Just enjoying ' + selectVal + ' on';
            $('#twitter').attr("href", url);
        }
    }

    if (location.hash === "#embeds") {
        $(function () {
            var $twitter = $('twitter');
            $('#iframe').on('load', function () {
                $(this).contents().find('#cds').change(function () {
                    var selectVal = $(this).val() || 'nothing much';
                    url = 'https://twitter.com/intent/tweet?button_hashtag=stream&text=Just enjoying ' + selectVal + ' on';
                     $('#twitter').attr("href", url);
                }).change();
            });
        });
    }
}

我知道这可能是不对的,或者在任何接近正确的地方,但我在正确的轨道上吗?说到javascript,我真的是个十足的傻瓜。提前感谢

除了函数的确切外观之外,它现在不会在哈希更改上执行

您可以使用jQuery,这样您就可以像这样监听哈希更改:

$(window).on('hashchange', function() {
   // your locationHashChanged() function goes here
}); 
这样,每次哈希更改时,都会执行函数。您的代码的基础很好:

if (location.hash === "#player") {
    // this is executed if hash changed to #player
}

if (location.hash === "#embeds") {       
    // this is executed if hash changed to #embeds
}
尽管如此,在
if
块中声明函数(这在这里没有多大意义)


还要注意,如果iframe不是来自您的域,您将无法从中获取任何数据。如果是这样的话,请阅读更多信息。

“它在哪个锚点”=嗯?请告诉我你的代码不是这样缩进的:-)@cbuckley不,它更干净,只是这里的格式