Javascript 为什么js函数在另一个函数内部工作而不是单独工作

Javascript 为什么js函数在另一个函数内部工作而不是单独工作,javascript,jquery,Javascript,Jquery,下面是这两个函数,无论出于什么原因,windowedBox函数只有在我从另一个函数调用它时才起作用。如果我直接调用windowedBox(),它不会做任何事情。如果调用getShareButtons(),它将调用windowedBox()并正常工作。如果有人知道这是为什么,请帮助我( 注意:如果你想知道为什么它是$j而不是$its,因为我是这样设置的 function getShareButtons(){ var postPath = window.location.pathname;

下面是这两个函数,无论出于什么原因,windowedBox函数只有在我从另一个函数调用它时才起作用。如果我直接调用windowedBox(),它不会做任何事情。如果调用getShareButtons(),它将调用windowedBox()并正常工作。如果有人知道这是为什么,请帮助我(

注意:如果你想知道为什么它是$j而不是$its,因为我是这样设置的

function getShareButtons(){
    var postPath = window.location.pathname;
    var videoTitle = 'asdf';
    var videoURL = 'asdf';

    //Output social button attributes
    $j(".facebook-share").attr('href', 'asdf');
    windowedBox(); <---THIS CALL WORKS
}

function windowedBox() { 
    $j(".facebook-share, .twitter-share").click(function(){
        window.open(this.href, videoTitle, "width=626, height=436", "status=0", "toolbar=0");
        return false;
    });
}
函数getShareButtons(){ var postPath=window.location.pathname; var videoTitle='asdf'; var videoURL='asdf'; //输出社交按钮属性 $j(“.facebook share”).attr('href','asdf');
windowedBox();出现错误,因为在第一个函数中设置了link
href
属性,但如果只调用第二个函数,则
this.href
将保持未定义或为空

像这样试试

$j(".facebook-share").attr('href', 'asdf');
var videoTitle = 'Title';

windowedBox();

function windowedBox() { 
    $j(".facebook-share, .twitter-share").click(function(){
        window.open(this.href, videoTitle, "width=626, height=436", "status=0", "toolbar=0");
        return false;
    });
}

出现错误是因为在第一个函数中设置了link
href
属性,但如果只调用第二个函数,则
this.href
将保持未定义或为空

像这样试试

$j(".facebook-share").attr('href', 'asdf');
var videoTitle = 'Title';

windowedBox();

function windowedBox() { 
    $j(".facebook-share, .twitter-share").click(function(){
        window.open(this.href, videoTitle, "width=626, height=436", "status=0", "toolbar=0");
        return false;
    });
}

我猜这是因为您使用的是变量

videoTitle 

它不是在这个函数中声明的,而是在另一个函数中声明的:)

我想这是因为您使用的是变量

videoTitle 

它不是在这个函数中声明的,而是在另一个函数中声明的:)

this.href
.this.href在第二个函数中是什么?
windowedBox();
this.href
在第二个函数中是什么?
windowedBox();
this.href
不是未定义的,而是一个空字符串。和
window.open(“”)
无论如何都应该打开该窗口。问题可能是由
引用错误引起的,因为
videoTitle
变量可能没有定义。@EvgeniyNaydenov我们不知道它是否是空字符串。如果链接在操作之前看起来像
链接
,那么它是未定义的链接设置为如果JS不是空的我仍然有一个基本的url。我修复了变量问题,解决了问题。谢谢大家:)@ZoltanToth,甚至更多,
window.open(未定义);
将打开新窗口。@EvgeniyNaydenov您是对的。即使使用不存在的href属性,它也会将其作为
字符串返回,这有点奇怪
。href
不是未定义的,而是一个空字符串。并且
窗口。打开(“”)
无论如何都应该打开该窗口。问题可能是由
引用错误引起的,因为
videoTitle
变量可能没有定义。@EvgeniyNaydenov我们不知道它是否是空字符串。如果链接在操作之前看起来像
链接
,那么它是未定义的链接设置为如果JS不是空的我仍然有一个基本的url。我修复了变量问题,解决了问题。谢谢大家:)@ZoltanToth,甚至更多,
window.open(未定义);
将打开新窗口。@EvgeniyNaydenov您是对的。即使使用不存在的href属性,它也会以
字符串的形式返回,这有点奇怪。如果此答案解决了您的问题,请将其标记为最佳答案。:@EvgeniyNaydenov我还不能。必须等待5分钟…D:如果此答案解决了您的问题,请将其标记为最佳答案t嗯。@EvgeniyNaydenov我还不能。我得等5分钟