get second element by class name if it exists





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I'm trying to get the ID of an element by class name like this



var prod_id2 = document.getElementsByClassName('select-selected')[1].id
document.getElementById('hidden-input-2').value = prod_id2;


This works fine, but my issue is that if there's only one element with that class it breaks the functionality, so I need some sort of if statement to only define this var if there is a second div with that class.
Any ideas?










share|improve this question


















  • 1





    Get the node list and verify that .length is at least 2.

    – Pointy
    Nov 23 '18 at 17:12


















1















I'm trying to get the ID of an element by class name like this



var prod_id2 = document.getElementsByClassName('select-selected')[1].id
document.getElementById('hidden-input-2').value = prod_id2;


This works fine, but my issue is that if there's only one element with that class it breaks the functionality, so I need some sort of if statement to only define this var if there is a second div with that class.
Any ideas?










share|improve this question


















  • 1





    Get the node list and verify that .length is at least 2.

    – Pointy
    Nov 23 '18 at 17:12














1












1








1








I'm trying to get the ID of an element by class name like this



var prod_id2 = document.getElementsByClassName('select-selected')[1].id
document.getElementById('hidden-input-2').value = prod_id2;


This works fine, but my issue is that if there's only one element with that class it breaks the functionality, so I need some sort of if statement to only define this var if there is a second div with that class.
Any ideas?










share|improve this question














I'm trying to get the ID of an element by class name like this



var prod_id2 = document.getElementsByClassName('select-selected')[1].id
document.getElementById('hidden-input-2').value = prod_id2;


This works fine, but my issue is that if there's only one element with that class it breaks the functionality, so I need some sort of if statement to only define this var if there is a second div with that class.
Any ideas?







javascript






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 23 '18 at 17:11









MariaLMariaL

355325




355325








  • 1





    Get the node list and verify that .length is at least 2.

    – Pointy
    Nov 23 '18 at 17:12














  • 1





    Get the node list and verify that .length is at least 2.

    – Pointy
    Nov 23 '18 at 17:12








1




1





Get the node list and verify that .length is at least 2.

– Pointy
Nov 23 '18 at 17:12





Get the node list and verify that .length is at least 2.

– Pointy
Nov 23 '18 at 17:12












3 Answers
3






active

oldest

votes


















3














Try this:






const elements = document.querySelectorAll('.test');

if (elements[1]) {
elements[1].innerText = 'Hithere';
}

<div class="test">hi</div>
<div class="test">hi</div>
<div class="test">hi</div>







  1. document.querySelectorAll('.test'); selects all elements with the class test and returns a nodelist.

  2. Then we can access the second element via of the nodelist with elements[1].






share|improve this answer































    0














    Here is how to check for the second element.



    You can also set another fallback , different to null:






    document.addEventListener("DOMContentLoaded", function(event) {
    var selectedElements = document.querySelectorAll('.selected-selected'),
    prod_id2 = selectedElements[1] || null;
    alert(prod_id2)
    });

    <div id="test" class="selected-selected"></div>





    You can also check that value then:



    if (prod_id2) { // do some other stuff with the set value }





    share|improve this answer































      0














      It breaks the functionality I think because you are grabbing the 2nd element specifically. You can do:



      const prod_id2 = document.querySelectorAll('.select-selected');


      and loop over the elements and grab the ID



      prod_id2.forEach((prod, index) => {
      if(index === 2) {
      document.getElementById('hidden-input-2').value = prod.id;
      }

      })





      share|improve this answer


























        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
        });


        }
        });














        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450662%2fget-second-element-by-class-name-if-it-exists%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        3














        Try this:






        const elements = document.querySelectorAll('.test');

        if (elements[1]) {
        elements[1].innerText = 'Hithere';
        }

        <div class="test">hi</div>
        <div class="test">hi</div>
        <div class="test">hi</div>







        1. document.querySelectorAll('.test'); selects all elements with the class test and returns a nodelist.

        2. Then we can access the second element via of the nodelist with elements[1].






        share|improve this answer




























          3














          Try this:






          const elements = document.querySelectorAll('.test');

          if (elements[1]) {
          elements[1].innerText = 'Hithere';
          }

          <div class="test">hi</div>
          <div class="test">hi</div>
          <div class="test">hi</div>







          1. document.querySelectorAll('.test'); selects all elements with the class test and returns a nodelist.

          2. Then we can access the second element via of the nodelist with elements[1].






          share|improve this answer


























            3












            3








            3







            Try this:






            const elements = document.querySelectorAll('.test');

            if (elements[1]) {
            elements[1].innerText = 'Hithere';
            }

            <div class="test">hi</div>
            <div class="test">hi</div>
            <div class="test">hi</div>







            1. document.querySelectorAll('.test'); selects all elements with the class test and returns a nodelist.

            2. Then we can access the second element via of the nodelist with elements[1].






            share|improve this answer













            Try this:






            const elements = document.querySelectorAll('.test');

            if (elements[1]) {
            elements[1].innerText = 'Hithere';
            }

            <div class="test">hi</div>
            <div class="test">hi</div>
            <div class="test">hi</div>







            1. document.querySelectorAll('.test'); selects all elements with the class test and returns a nodelist.

            2. Then we can access the second element via of the nodelist with elements[1].






            const elements = document.querySelectorAll('.test');

            if (elements[1]) {
            elements[1].innerText = 'Hithere';
            }

            <div class="test">hi</div>
            <div class="test">hi</div>
            <div class="test">hi</div>





            const elements = document.querySelectorAll('.test');

            if (elements[1]) {
            elements[1].innerText = 'Hithere';
            }

            <div class="test">hi</div>
            <div class="test">hi</div>
            <div class="test">hi</div>






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 23 '18 at 17:15









            Willem van der VeenWillem van der Veen

            5,61333139




            5,61333139

























                0














                Here is how to check for the second element.



                You can also set another fallback , different to null:






                document.addEventListener("DOMContentLoaded", function(event) {
                var selectedElements = document.querySelectorAll('.selected-selected'),
                prod_id2 = selectedElements[1] || null;
                alert(prod_id2)
                });

                <div id="test" class="selected-selected"></div>





                You can also check that value then:



                if (prod_id2) { // do some other stuff with the set value }





                share|improve this answer




























                  0














                  Here is how to check for the second element.



                  You can also set another fallback , different to null:






                  document.addEventListener("DOMContentLoaded", function(event) {
                  var selectedElements = document.querySelectorAll('.selected-selected'),
                  prod_id2 = selectedElements[1] || null;
                  alert(prod_id2)
                  });

                  <div id="test" class="selected-selected"></div>





                  You can also check that value then:



                  if (prod_id2) { // do some other stuff with the set value }





                  share|improve this answer


























                    0












                    0








                    0







                    Here is how to check for the second element.



                    You can also set another fallback , different to null:






                    document.addEventListener("DOMContentLoaded", function(event) {
                    var selectedElements = document.querySelectorAll('.selected-selected'),
                    prod_id2 = selectedElements[1] || null;
                    alert(prod_id2)
                    });

                    <div id="test" class="selected-selected"></div>





                    You can also check that value then:



                    if (prod_id2) { // do some other stuff with the set value }





                    share|improve this answer













                    Here is how to check for the second element.



                    You can also set another fallback , different to null:






                    document.addEventListener("DOMContentLoaded", function(event) {
                    var selectedElements = document.querySelectorAll('.selected-selected'),
                    prod_id2 = selectedElements[1] || null;
                    alert(prod_id2)
                    });

                    <div id="test" class="selected-selected"></div>





                    You can also check that value then:



                    if (prod_id2) { // do some other stuff with the set value }





                    document.addEventListener("DOMContentLoaded", function(event) {
                    var selectedElements = document.querySelectorAll('.selected-selected'),
                    prod_id2 = selectedElements[1] || null;
                    alert(prod_id2)
                    });

                    <div id="test" class="selected-selected"></div>





                    document.addEventListener("DOMContentLoaded", function(event) {
                    var selectedElements = document.querySelectorAll('.selected-selected'),
                    prod_id2 = selectedElements[1] || null;
                    alert(prod_id2)
                    });

                    <div id="test" class="selected-selected"></div>






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 23 '18 at 17:20









                    GutelaunetypGutelaunetyp

                    17510




                    17510























                        0














                        It breaks the functionality I think because you are grabbing the 2nd element specifically. You can do:



                        const prod_id2 = document.querySelectorAll('.select-selected');


                        and loop over the elements and grab the ID



                        prod_id2.forEach((prod, index) => {
                        if(index === 2) {
                        document.getElementById('hidden-input-2').value = prod.id;
                        }

                        })





                        share|improve this answer






























                          0














                          It breaks the functionality I think because you are grabbing the 2nd element specifically. You can do:



                          const prod_id2 = document.querySelectorAll('.select-selected');


                          and loop over the elements and grab the ID



                          prod_id2.forEach((prod, index) => {
                          if(index === 2) {
                          document.getElementById('hidden-input-2').value = prod.id;
                          }

                          })





                          share|improve this answer




























                            0












                            0








                            0







                            It breaks the functionality I think because you are grabbing the 2nd element specifically. You can do:



                            const prod_id2 = document.querySelectorAll('.select-selected');


                            and loop over the elements and grab the ID



                            prod_id2.forEach((prod, index) => {
                            if(index === 2) {
                            document.getElementById('hidden-input-2').value = prod.id;
                            }

                            })





                            share|improve this answer















                            It breaks the functionality I think because you are grabbing the 2nd element specifically. You can do:



                            const prod_id2 = document.querySelectorAll('.select-selected');


                            and loop over the elements and grab the ID



                            prod_id2.forEach((prod, index) => {
                            if(index === 2) {
                            document.getElementById('hidden-input-2').value = prod.id;
                            }

                            })






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited Nov 23 '18 at 17:23

























                            answered Nov 23 '18 at 17:18









                            DmitriyDmitriy

                            633316




                            633316






























                                draft saved

                                draft discarded




















































                                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.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function () {
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450662%2fget-second-element-by-class-name-if-it-exists%23new-answer', 'question_page');
                                }
                                );

                                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







                                Popular posts from this blog

                                "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

                                Alcedinidae

                                Origin of the phrase “under your belt”?