Javascript 在java脚本中第一个函数完全完成后调用第二个函数
我有一个javascript函数,它是加载帮助菜单列表(下拉列表) 第一个函数:GetPageKeyword() 在某些情况下,第二个函数不起作用,因为它可能无法找到#helpMenu的id 代码:function:getArticulatedDetails:--$(“#帮助菜单”).html(htmlapend)Javascript 在java脚本中第一个函数完全完成后调用第二个函数,javascript,jquery,Javascript,Jquery,我有一个javascript函数,它是加载帮助菜单列表(下拉列表) 第一个函数:GetPageKeyword() 在某些情况下,第二个函数不起作用,因为它可能无法找到#helpMenu的id 代码:function:getArticulatedDetails:--$(“#帮助菜单”).html(htmlapend) 因此,在完成第一个函数后,我如何调用第二个函数。从代码中,似乎$(“#帮助菜单”)被发现为null或未定义 尝试检查$(“#帮助菜单”) **if($('#helpMenu') ==
因此,在完成第一个函数后,我如何调用第二个函数。从代码中,似乎
$(“#帮助菜单”)
被发现为null或未定义
尝试检查$(“#帮助菜单”)
**if($('#helpMenu') == null || $('#helpMenu') == undefined)**
然后执行追加html操作。从代码中,似乎发现
$(“#帮助菜单”)
为空或未定义
尝试检查$(“#帮助菜单”)
**if($('#helpMenu') == null || $('#helpMenu') == undefined)**
然后执行追加html操作。在第一个方法中,调用
$('#helpMenu').html(htmlAppend)
应位于getJson(…)的处理程序中
目前,它在该方法完成之前被调用,但依赖于该异步回调生成的数据
(我会给你一个明确的代码更改,但很难在手机上编辑)
编辑-实际上上面的行是重复的。处理程序外部的一个可以删除。也许有重复的ID
更新Html后,还可以从getJson处理程序中调用第二个方法
menuHelpUl仅在getJson中的调用返回一些数据时才存在。如果没有,则没有元素。在第一个方法中,调用
$('#helpMenu').html(htmlAppend)
应位于getJson(…)的处理程序中
目前,它在该方法完成之前被调用,但依赖于该异步回调生成的数据
(我会给你一个明确的代码更改,但很难在手机上编辑)
编辑-实际上上面的行是重复的。处理程序外部的一个可以删除。也许有重复的ID
更新Html后,还可以从getJson处理程序中调用第二个方法
menuHelpUl仅在getJson中的调用返回一些数据时才存在。如果没有,则没有元素。尝试在ajax成功回调结束时调用第二个函数:
$.ajax({
/* settings */
success: function (data) {
var res = data.data;
var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
if (res.length > 0) {
$.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
function (data) {
if (data.results.length > 0) {
htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
for (var i = 0; i < data.results.length; i++) {
htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
}
htmlAppend += "</ul>";
}
$('#helpMenu').html(htmlAppend);
GetArticulateDetails(); // here !
});
}
$('#helpMenu').html(htmlAppend);
}
});
尝试在ajax成功回调结束时调用第二个函数:
$.ajax({
/* settings */
success: function (data) {
var res = data.data;
var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
if (res.length > 0) {
$.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
function (data) {
if (data.results.length > 0) {
htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
for (var i = 0; i < data.results.length; i++) {
htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
}
htmlAppend += "</ul>";
}
$('#helpMenu').html(htmlAppend);
GetArticulateDetails(); // here !
});
}
$('#helpMenu').html(htmlAppend);
}
});
使用javascript中的承诺尝试此解决方案:
function GetPageKeyword() {
return new Promise((resolve, reject)=>{
//your code here
resolve();
});
}
function GetArticulateDetails() {
return new Promise((resolve, reject)=>{
//your code here
resolve();
});
}
可以这样称呼:
GetPageKeyword().then((result)=>{
GetArticulateDetails();
}).catch((error)=>{
//handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
以下是已编辑的第一个函数:
function GetPageKeyword() {
return new Promise((resolve,reject)=>{
var url = window.location.href.replace(window.location.origin, '').replace('/#', '').replace('#', '').replace('//', '/');
url = url.split("?")[0];
url = GetURL(url);
if (url.lastIndexOf('/') == (url.length - 1))
url = url.slice(0, -1);
if (url.indexOf('/') == 0)
url = url.substring(1, url.length);
$.ajax({
url: "/api/PageKeywords/GetLabelsByUrl",
type: 'Get',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
cache: false,
data: { url: url },
success: function (data) {
var res = data.data;
var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
if (res.length > 0) {
$.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
function (data) {
if (data.results.length > 0) {
htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
for (var i = 0; i < data.results.length; i++) {
htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
}
htmlAppend += "</ul>";
$('#helpMenu').html(htmlAppend);
resolve()
}else{
$('#helpMenu').html(htmlAppend);
resolve()
}
});
}else{
$('#helpMenu').html(htmlAppend);
resolve()
}
},
error: function (jqXhr, textStatus, errorThrown) {
var err = jqXhr;
reject()
}
});
})
}
函数GetPageKeyword(){
返回新承诺((解决、拒绝)=>{
var url=window.location.href.replace(window.location.origin.).replace('/#','').replace('/#','').replace('/#','');
url=url.split(“?”[0];
url=GetURL(url);
if(url.lastIndexOf('/')==(url.length-1))
url=url.slice(0,-1);
if(url.indexOf('/')==0)
url=url.substring(1,url.length);
$.ajax({
url:“/api/PageKeywords/GetLabelsByUrl”,
键入:“Get”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
cache:false,
数据:{url:url},
成功:功能(数据){
var res=data.data;
var htmlAppend='”;
}
htmlAppend+=“”;
$('helpMenu').html(htmlapend);
解决()
}否则{
$('helpMenu').html(htmlapend);
解决()
}
});
}否则{
$('helpMenu').html(htmlapend);
解决()
}
},
错误:函数(jqXhr、textStatus、errorshown){
var err=jqXhr;
拒绝
}
});
})
}
使用javascript中的承诺尝试此解决方案:
function GetPageKeyword() {
return new Promise((resolve, reject)=>{
//your code here
resolve();
});
}
function GetArticulateDetails() {
return new Promise((resolve, reject)=>{
//your code here
resolve();
});
}
可以这样称呼:
GetPageKeyword().then((result)=>{
GetArticulateDetails();
}).catch((error)=>{
//handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
以下是已编辑的第一个函数:
function GetPageKeyword() {
return new Promise((resolve,reject)=>{
var url = window.location.href.replace(window.location.origin, '').replace('/#', '').replace('#', '').replace('//', '/');
url = url.split("?")[0];
url = GetURL(url);
if (url.lastIndexOf('/') == (url.length - 1))
url = url.slice(0, -1);
if (url.indexOf('/') == 0)
url = url.substring(1, url.length);
$.ajax({
url: "/api/PageKeywords/GetLabelsByUrl",
type: 'Get',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
cache: false,
data: { url: url },
success: function (data) {
var res = data.data;
var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
if (res.length > 0) {
$.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
function (data) {
if (data.results.length > 0) {
htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
for (var i = 0; i < data.results.length; i++) {
htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
}
htmlAppend += "</ul>";
$('#helpMenu').html(htmlAppend);
resolve()
}else{
$('#helpMenu').html(htmlAppend);
resolve()
}
});
}else{
$('#helpMenu').html(htmlAppend);
resolve()
}
},
error: function (jqXhr, textStatus, errorThrown) {
var err = jqXhr;
reject()
}
});
})
}
函数GetPageKeyword(){
返回新承诺((解决、拒绝)=>{
var url=window.location.href.replace(window.location.origin.).replace('/#','').replace('/#','').replace('/#','');
url=url.split(“?”[0];
url=GetURL(url);
if(url.lastIndexOf('/')==(url.length-1))
url=url.slice(0,-1);
if(url.indexOf('/')==0)
url=url.substring(1,url.length);
$.ajax({
url:“/api/PageKeywords/GetLabelsByUrl”,
键入:“Get”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
cache:false,
数据:{url:url},
成功:功能(数据){
var res=data.data;
var htmlAppend='”;
}
htmlAppend+=“”;
$('helpMenu').html(htmlapend);
解决()
}否则{
$('helpMenu').html(htmlapend);
解决()
}
});
}否则{
$('helpMenu').html(htmlapend);
解决()
}
},
错误:函数(jqXhr、textStatus、errorshown){
var err=jqXhr;
拒绝
}
});
})
}
您可以使用
你可以用
将menuHelpUl声明为ui元素,如下所示:
GetPageKeyword().then((result)=>{
GetArticulateDetails();
}).catch((error)=>{
//handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
并在ajax成功中使用它
menuHelpUl.append(htmlAppend);
将menuHelpUl声明为ui元素,如下所示:
GetPageKeyword().then((result)=>{
GetArticulateDetails();
}).catch((error)=>{
//handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
并在ajax成功中使用它