With the code I have posted, I can add to array fine but how do I remove from array if checkbox is unticked. Any help would be greatfully appreciated. Many thanks $(function() { info = []; $(document).on('click', '.rowChk', function () { if($(this).is(':checked')) { $('#rowClk').show(); var currentRows = $(this).closest("tr"); var rackid = currentRows.find("td:eq(0)").html(); data = {}; data.id = rackid; info.push(data); //console.log(data); //console.log(info.length); } else { delete [info.id]; <--- Need to delete checkbox value from array --> //console.log(info.length); if(info.length === 0) { $('#rowClk').css('display','none'); } } }); }); Code (javascript): PS. I cannot see a way to format the code in the editor. Is there an option?
1) I suggest disabling the scripttard editor on these forums and just using bbCode. bbCode is like HTML but with [] instead of <>. For formatting code, you just wrap your content in [code]Your code[/code] Thus: Your code Code (markup): https://en.wikipedia.org/wiki/BBCode 2) It's hard to even figure out what your scripting is doing -- or even supposed to do -- without the markup it is manipulating. 3) This is another STUNNING example of why the mental midgetry that is jQuery does nothing but piss on a website. The ONLY thing you can learn from it is how NOT to use JavaScript... for anything. EVER. IF I'm following your intent -- no guarantee on that -- then I'd be using an object instead of an array. It's equally iterable and easier to work with. I would also be trapping "change" and not "click", or perhaps both if I cared about legacy IE. (which I no longer do on scripting, let them gracefully degrade to the non-scripted version of the site.). Hence if info was {} instead of [], you could then do: info[Element.name] = Element.value; // set it delete info[Element.name]; // remove it Code (markup): Where Element is the actual checkbox INPUT. Remember JavaScript objects are enumerable so you can treat them much akin to PHP's indexed arrays. But given I can't even figure out what it is you're trying to do? Yeah, that's a problem. I mean why are you show/hiding? If it's hidden how do you unclick it? What makes the show/hide any of JavaScript's business? Could you leverage <label> and input:checked to do most of the heavy lifting?
@deathshadow Thank you for reply. However, your comments have confused me. For example, the hide/show function is simply if a user clicks a checkbox then a action button is shown so they can action that row in the table. Unchecked, the button is hidden so they cannot enter null values etc. Why can you not figure out what I am trying to do? very simply, if a user clicks a checkbox, add the table row values to an array. If the checkbox is unchecked, then delete that value from the array. (Hope that is clearer). Could you do an example markup based on your comments. Many thanks.
Why are you tracking them in an array if you've got a checkbox and perfectly good existing values? That's the part I'm not getting. It's funny, you asked for an example of markup, when I was going to suggest the same thing. I'm a "content oriented" developer, so I kind of need to see the data or a facsimile of data to even try and make sense of what you're saying. For right now, it sounds like you want to use JavaScript for something that sounds more like a server-side task... basically not even being any of JavaScript's business in the first place. (aka form data)