Return arrays in Javascript
I'm using the Dragsort plugin and we want to tag IDs in an array and print them.
My Html Code Is:
<ul id="list1">
<li class="ss"><div>1</div></li>
<li><div>2</div></li>
<li><div>3</div></li>
<li><div>4</div></li>
<li><div>5</div></li>
<li><div>6</div></li>
<li><div>7</div></li>
<li><div>8</div></li>
<li><div>9</div></li>
</ul>
<p id="demo"></p>
and my jQyery codes is
$("#list1, #list2").dragsort({ dragSelector: "div", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<li class='placeHolder'><div></div></li>" });
function saveOrder() {
var data = $("#list1 li").map(function() { return $(this).children().html(); }).get();
$("input[name=list1SortOrder]").val(data.join("|"));
};
$( "#list1 li" ).each(function( index ) {
let items = ;
items = [ index + 1];
console.log(items.map(() => index));
$(this).attr("id",items);
});
$('#hamid').click(function () {
$( "#list1 li" ).each(function() {
its = [ $(this).attr('id')];
});
});
When I want to return id <li>
return last of them
javascript jquery
add a comment |
I'm using the Dragsort plugin and we want to tag IDs in an array and print them.
My Html Code Is:
<ul id="list1">
<li class="ss"><div>1</div></li>
<li><div>2</div></li>
<li><div>3</div></li>
<li><div>4</div></li>
<li><div>5</div></li>
<li><div>6</div></li>
<li><div>7</div></li>
<li><div>8</div></li>
<li><div>9</div></li>
</ul>
<p id="demo"></p>
and my jQyery codes is
$("#list1, #list2").dragsort({ dragSelector: "div", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<li class='placeHolder'><div></div></li>" });
function saveOrder() {
var data = $("#list1 li").map(function() { return $(this).children().html(); }).get();
$("input[name=list1SortOrder]").val(data.join("|"));
};
$( "#list1 li" ).each(function( index ) {
let items = ;
items = [ index + 1];
console.log(items.map(() => index));
$(this).attr("id",items);
});
$('#hamid').click(function () {
$( "#list1 li" ).each(function() {
its = [ $(this).attr('id')];
});
});
When I want to return id <li>
return last of them
javascript jquery
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
You're reassigningits
with a new array when iterating through the whole collection of#list1 li
. Just use.map()
to return the array of IDs in all the<li>
elements in the click handler.
– Terry
Nov 14 '18 at 10:13
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19
add a comment |
I'm using the Dragsort plugin and we want to tag IDs in an array and print them.
My Html Code Is:
<ul id="list1">
<li class="ss"><div>1</div></li>
<li><div>2</div></li>
<li><div>3</div></li>
<li><div>4</div></li>
<li><div>5</div></li>
<li><div>6</div></li>
<li><div>7</div></li>
<li><div>8</div></li>
<li><div>9</div></li>
</ul>
<p id="demo"></p>
and my jQyery codes is
$("#list1, #list2").dragsort({ dragSelector: "div", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<li class='placeHolder'><div></div></li>" });
function saveOrder() {
var data = $("#list1 li").map(function() { return $(this).children().html(); }).get();
$("input[name=list1SortOrder]").val(data.join("|"));
};
$( "#list1 li" ).each(function( index ) {
let items = ;
items = [ index + 1];
console.log(items.map(() => index));
$(this).attr("id",items);
});
$('#hamid').click(function () {
$( "#list1 li" ).each(function() {
its = [ $(this).attr('id')];
});
});
When I want to return id <li>
return last of them
javascript jquery
I'm using the Dragsort plugin and we want to tag IDs in an array and print them.
My Html Code Is:
<ul id="list1">
<li class="ss"><div>1</div></li>
<li><div>2</div></li>
<li><div>3</div></li>
<li><div>4</div></li>
<li><div>5</div></li>
<li><div>6</div></li>
<li><div>7</div></li>
<li><div>8</div></li>
<li><div>9</div></li>
</ul>
<p id="demo"></p>
and my jQyery codes is
$("#list1, #list2").dragsort({ dragSelector: "div", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<li class='placeHolder'><div></div></li>" });
function saveOrder() {
var data = $("#list1 li").map(function() { return $(this).children().html(); }).get();
$("input[name=list1SortOrder]").val(data.join("|"));
};
$( "#list1 li" ).each(function( index ) {
let items = ;
items = [ index + 1];
console.log(items.map(() => index));
$(this).attr("id",items);
});
$('#hamid').click(function () {
$( "#list1 li" ).each(function() {
its = [ $(this).attr('id')];
});
});
When I want to return id <li>
return last of them
javascript jquery
javascript jquery
edited Nov 14 '18 at 10:13
executable
1,7602822
1,7602822
asked Nov 14 '18 at 10:05
Arman BagheriArman Bagheri
1499
1499
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
You're reassigningits
with a new array when iterating through the whole collection of#list1 li
. Just use.map()
to return the array of IDs in all the<li>
elements in the click handler.
– Terry
Nov 14 '18 at 10:13
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19
add a comment |
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
You're reassigningits
with a new array when iterating through the whole collection of#list1 li
. Just use.map()
to return the array of IDs in all the<li>
elements in the click handler.
– Terry
Nov 14 '18 at 10:13
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
You're reassigning
its
with a new array when iterating through the whole collection of #list1 li
. Just use .map()
to return the array of IDs in all the <li>
elements in the click handler.– Terry
Nov 14 '18 at 10:13
You're reassigning
its
with a new array when iterating through the whole collection of #list1 li
. Just use .map()
to return the array of IDs in all the <li>
elements in the click handler.– Terry
Nov 14 '18 at 10:13
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19
add a comment |
2 Answers
2
active
oldest
votes
You may want to change the line
its = [ $(this).attr('id')];
//this will only create an instance of an array with one element.
change the last function to something like:
$('#hamid').click(function () {
var ids = ;
$( "#list1 li" ).each(function() {
ids.push( $(this).attr('id') );
});
console.log(ids);
// this will print an array with all ids inside
// then you can return it or do whatever you want with it
});
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
add a comment |
I guess your issue is that you want to get all the IDs of the elements that matches #list1 li
, as seen in the last 5 lines of your code. The reason why it is not working is because you are reassigning a brand new array to the its
variable. I suggest doing one of the two:
- Solution 1: Push into the array instead of reassigning it
- Solution 2: Use
.map()
+.get()
to return an array of all IDs
Solution 1 (basic)
Use Array.prototype.push()
to append IDs to a pre-existing array. Remember that instead of converting this
into a jQuery object and then accessing its ID via the .attr()
method (by doing $(this).attr('id')
), you can easily do this.id
:
$('#hamid').click(function () {
var its = ;
$('#list1 li').each(function() {
its.push(this.id);
});
console.log(its);
});
Solution 2 (better)
Use a combination of .map()
and .get()
. This is the most jQuery-way to do it:
$('#hamid').click(function () {
var its = $('#list1 li').map(function() {
return this.id;
}).get();
console.log(its);
});
The reason why .get()
is needed is because .map()
returns a jQuery collection instead of an actual array. To retrieve the array itself, you will need to append .get()
after .map()
.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53297568%2freturn-arrays-in-javascript%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You may want to change the line
its = [ $(this).attr('id')];
//this will only create an instance of an array with one element.
change the last function to something like:
$('#hamid').click(function () {
var ids = ;
$( "#list1 li" ).each(function() {
ids.push( $(this).attr('id') );
});
console.log(ids);
// this will print an array with all ids inside
// then you can return it or do whatever you want with it
});
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
add a comment |
You may want to change the line
its = [ $(this).attr('id')];
//this will only create an instance of an array with one element.
change the last function to something like:
$('#hamid').click(function () {
var ids = ;
$( "#list1 li" ).each(function() {
ids.push( $(this).attr('id') );
});
console.log(ids);
// this will print an array with all ids inside
// then you can return it or do whatever you want with it
});
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
add a comment |
You may want to change the line
its = [ $(this).attr('id')];
//this will only create an instance of an array with one element.
change the last function to something like:
$('#hamid').click(function () {
var ids = ;
$( "#list1 li" ).each(function() {
ids.push( $(this).attr('id') );
});
console.log(ids);
// this will print an array with all ids inside
// then you can return it or do whatever you want with it
});
You may want to change the line
its = [ $(this).attr('id')];
//this will only create an instance of an array with one element.
change the last function to something like:
$('#hamid').click(function () {
var ids = ;
$( "#list1 li" ).each(function() {
ids.push( $(this).attr('id') );
});
console.log(ids);
// this will print an array with all ids inside
// then you can return it or do whatever you want with it
});
edited Nov 14 '18 at 10:17
answered Nov 14 '18 at 10:15
AhmadAhmad
8,23543563
8,23543563
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
add a comment |
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
thanks it worked
– Arman Bagheri
Nov 14 '18 at 10:16
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
yes of course..
– Arman Bagheri
Nov 14 '18 at 11:20
add a comment |
I guess your issue is that you want to get all the IDs of the elements that matches #list1 li
, as seen in the last 5 lines of your code. The reason why it is not working is because you are reassigning a brand new array to the its
variable. I suggest doing one of the two:
- Solution 1: Push into the array instead of reassigning it
- Solution 2: Use
.map()
+.get()
to return an array of all IDs
Solution 1 (basic)
Use Array.prototype.push()
to append IDs to a pre-existing array. Remember that instead of converting this
into a jQuery object and then accessing its ID via the .attr()
method (by doing $(this).attr('id')
), you can easily do this.id
:
$('#hamid').click(function () {
var its = ;
$('#list1 li').each(function() {
its.push(this.id);
});
console.log(its);
});
Solution 2 (better)
Use a combination of .map()
and .get()
. This is the most jQuery-way to do it:
$('#hamid').click(function () {
var its = $('#list1 li').map(function() {
return this.id;
}).get();
console.log(its);
});
The reason why .get()
is needed is because .map()
returns a jQuery collection instead of an actual array. To retrieve the array itself, you will need to append .get()
after .map()
.
add a comment |
I guess your issue is that you want to get all the IDs of the elements that matches #list1 li
, as seen in the last 5 lines of your code. The reason why it is not working is because you are reassigning a brand new array to the its
variable. I suggest doing one of the two:
- Solution 1: Push into the array instead of reassigning it
- Solution 2: Use
.map()
+.get()
to return an array of all IDs
Solution 1 (basic)
Use Array.prototype.push()
to append IDs to a pre-existing array. Remember that instead of converting this
into a jQuery object and then accessing its ID via the .attr()
method (by doing $(this).attr('id')
), you can easily do this.id
:
$('#hamid').click(function () {
var its = ;
$('#list1 li').each(function() {
its.push(this.id);
});
console.log(its);
});
Solution 2 (better)
Use a combination of .map()
and .get()
. This is the most jQuery-way to do it:
$('#hamid').click(function () {
var its = $('#list1 li').map(function() {
return this.id;
}).get();
console.log(its);
});
The reason why .get()
is needed is because .map()
returns a jQuery collection instead of an actual array. To retrieve the array itself, you will need to append .get()
after .map()
.
add a comment |
I guess your issue is that you want to get all the IDs of the elements that matches #list1 li
, as seen in the last 5 lines of your code. The reason why it is not working is because you are reassigning a brand new array to the its
variable. I suggest doing one of the two:
- Solution 1: Push into the array instead of reassigning it
- Solution 2: Use
.map()
+.get()
to return an array of all IDs
Solution 1 (basic)
Use Array.prototype.push()
to append IDs to a pre-existing array. Remember that instead of converting this
into a jQuery object and then accessing its ID via the .attr()
method (by doing $(this).attr('id')
), you can easily do this.id
:
$('#hamid').click(function () {
var its = ;
$('#list1 li').each(function() {
its.push(this.id);
});
console.log(its);
});
Solution 2 (better)
Use a combination of .map()
and .get()
. This is the most jQuery-way to do it:
$('#hamid').click(function () {
var its = $('#list1 li').map(function() {
return this.id;
}).get();
console.log(its);
});
The reason why .get()
is needed is because .map()
returns a jQuery collection instead of an actual array. To retrieve the array itself, you will need to append .get()
after .map()
.
I guess your issue is that you want to get all the IDs of the elements that matches #list1 li
, as seen in the last 5 lines of your code. The reason why it is not working is because you are reassigning a brand new array to the its
variable. I suggest doing one of the two:
- Solution 1: Push into the array instead of reassigning it
- Solution 2: Use
.map()
+.get()
to return an array of all IDs
Solution 1 (basic)
Use Array.prototype.push()
to append IDs to a pre-existing array. Remember that instead of converting this
into a jQuery object and then accessing its ID via the .attr()
method (by doing $(this).attr('id')
), you can easily do this.id
:
$('#hamid').click(function () {
var its = ;
$('#list1 li').each(function() {
its.push(this.id);
});
console.log(its);
});
Solution 2 (better)
Use a combination of .map()
and .get()
. This is the most jQuery-way to do it:
$('#hamid').click(function () {
var its = $('#list1 li').map(function() {
return this.id;
}).get();
console.log(its);
});
The reason why .get()
is needed is because .map()
returns a jQuery collection instead of an actual array. To retrieve the array itself, you will need to append .get()
after .map()
.
answered Nov 14 '18 at 10:17
TerryTerry
29k44268
29k44268
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53297568%2freturn-arrays-in-javascript%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
The question is not clear. What is the problem you are facing?
– Ahmad
Nov 14 '18 at 10:09
problem is when i want to return all ids in "its" variable , it return just last id
– Arman Bagheri
Nov 14 '18 at 10:11
You're reassigning
its
with a new array when iterating through the whole collection of#list1 li
. Just use.map()
to return the array of IDs in all the<li>
elements in the click handler.– Terry
Nov 14 '18 at 10:13
can you give me code it ?
– Arman Bagheri
Nov 14 '18 at 10:15
@arman Sure. See my answer: there are two ways to do it: a basic way, and a truly jQuery way :)
– Terry
Nov 14 '18 at 10:19