Javascript Jquery:获取函数的返回值
我想用jquery创建一个基本的通用函数,将html列表的所有元素放入一个数组中。一切似乎都很好,但我在获取返回值时遇到了一些问题。我知道这是一个基本问题,所以我希望你能帮助我解决它Javascript Jquery:获取函数的返回值,javascript,jquery,return-value,Javascript,Jquery,Return Value,我想用jquery创建一个基本的通用函数,将html列表的所有元素放入一个数组中。一切似乎都很好,但我在获取返回值时遇到了一些问题。我知道这是一个基本问题,所以我希望你能帮助我解决它 <script> function listeToArrayById(idListe){ $(function(){ var listChildren = $("#" + idListe).children(); //puts
<script>
function listeToArrayById(idListe){
$(function(){
var listChildren = $("#" + idListe).children(); //puts all li children in var listChildren
var arrayListChildren = [];
$.each(listChildren, function(key, value){
arrayListChildren.push($(this).text());
})
return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"]
})
}
var ulChildren = listeToArrayById("list1");
window.console.log(ulChildren); // here is my problem because ulChildren is undefined ... I should get an array ["a", "b", "c"]
</script>
</head>
<body>
<ul id="list1">
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</body>
函数ListToArrayById(idListe){
$(函数(){
var listChildren=$(“#”+idListe.children();//将所有li子项放入var listChildren中
var arrayListChildren=[];
$.each(列表子项、函数(键、值){
arrayListChildren.push($(this.text());
})
返回arrayListChildren;//这里是ok arrayListChildren=[“a”、“b”、“c”]
})
}
var ulChildren=listedarraybyid(“列表1”);
window.console.log(ulChildren);//这是我的问题,因为ulChildren是未定义的。。。我应该得到一个数组[“a”,“b”,“c”]
- a
- b
- c
您以错误的方式使用了文档就绪处理程序
function listeToArrayById(idListe){
var listChildren = $("#" + idListe).children();
var arrayListChildren = [];
$.each(listChildren, function(key, value){
arrayListChildren.push($(this).text());
})
return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"]
}
$(function(){
var ulChildren = listeToArrayById("list1");
console.log(ulChildren);
});
您可以简化代码,如下所示
function listeToArrayById(idListe){
return $("#" + idListe).children().map(function(){
return this.textContent
}).get();
}
为什么将
$(function(){
放在函数中?当您调用函数时,它不会执行它,因为您将$(function(){
放在函数中,因此它会等待DOM加载。将var ulChildren=listeToArrayById(“list1”);window.console.log(ulChildren)放在
在DOM中,准备好并从函数中删除,它就会工作。非常感谢,先生,它工作了!我在stackoverflow上享有“11”的声誉…我需要一个“15”声誉能够投票选出好的答案……这意味着我只需要一个人投票就可以得到15个声誉。@zm455你仍然可以接受答案。如果你觉得这个答案对你有帮助,那么试着按下我答案中的勾号。这不是强迫。:)有人对我的问题投了赞成票,所以现在我可以对你的答案投赞成票。非常感谢,先生。祝您愉快;-)