JavaScript有时不适用于IE 7,8,9

时间:2011-11-02 18:22:58

标签: javascript jquery internet-explorer

我有这个代码,每次用户点击页面中的按钮时都会更改网址。 这在safari,chrome,firefox中非常有用,但在IE 7,8,9中却没有。 可能是什么问题?

function setNewNavigationUrls(){
    var musicParameter;
    if (isMusicOn) {
        musicParameter='1';
    }else{
        musicParameter='0';
    }

    $("a[href='/']").attr('href', '/?music='+musicParameter);
    $("a[href='/collection-glamour-feeling']").attr('href', '/collection-glamour-feeling?music='+musicParameter);
    $("a[href='/collection-poetic-moments']").attr('href','/collection-poetic-moments?music='+musicParameter);
    $("a[href='/about.html']").attr('href','/about.html?music='+musicParameter);
    $("a[href='/contact.html']").attr('href', '/contact.html?music='+musicParameter);
}

由于 沙尼

2 个答案:

答案 0 :(得分:1)

您可能应该使用“.prop()”而不是“.attr()”来设置<a>元素的“href”。

$("a[href='/']").prop('href', '/?music='+musicParameter);
// ... etc. ...

使用jQuery 1.6,“attr()”的语义发生了很大变化。 “href”属性成为元素的DOM节点的属性,因此应将其设置为属性。 “attr()”方法现在关注属性(通过“setAttribute()”和“getAttribute()”)。在jQuery 1.6.1之后,以向后兼容的方式处理“已检查”和“已禁用”等布尔属性。

答案 1 :(得分:0)

您可能想尝试将if (isMusicOn)替换为if (typeof isMusicOn !== "undefined"),以确保正确评估该语句。