How do I populate the index number of a option value list with cheerio?












0















hi guys i am trying to get the index number of a list from a website using cheerio. for example the index number for "40 - only one left" is 2.



how would i go about getting the number 2 by having only '40' to match (without only one left)?



<option value="">Select Size</option>
<option value="2970"> 40 - only one left</option>
<option value="2973"> 41 - only one left</option>
<option value="2976"> 42 - only one left</option>









share|improve this question





























    0















    hi guys i am trying to get the index number of a list from a website using cheerio. for example the index number for "40 - only one left" is 2.



    how would i go about getting the number 2 by having only '40' to match (without only one left)?



    <option value="">Select Size</option>
    <option value="2970"> 40 - only one left</option>
    <option value="2973"> 41 - only one left</option>
    <option value="2976"> 42 - only one left</option>









    share|improve this question



























      0












      0








      0








      hi guys i am trying to get the index number of a list from a website using cheerio. for example the index number for "40 - only one left" is 2.



      how would i go about getting the number 2 by having only '40' to match (without only one left)?



      <option value="">Select Size</option>
      <option value="2970"> 40 - only one left</option>
      <option value="2973"> 41 - only one left</option>
      <option value="2976"> 42 - only one left</option>









      share|improve this question
















      hi guys i am trying to get the index number of a list from a website using cheerio. for example the index number for "40 - only one left" is 2.



      how would i go about getting the number 2 by having only '40' to match (without only one left)?



      <option value="">Select Size</option>
      <option value="2970"> 40 - only one left</option>
      <option value="2973"> 41 - only one left</option>
      <option value="2976"> 42 - only one left</option>






      javascript node.js cheerio






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 1 at 22:31









      ibrahim mahrir

      22.2k41951




      22.2k41951










      asked Jan 1 at 22:27









      Cheeky LanccCheeky Lancc

      43




      43
























          2 Answers
          2






          active

          oldest

          votes


















          1














          You can first select the <option> by text using the cheerio/jQuery selector :contains (the text could be anything), then call the function index to get its index inside its parent:



          var index = $("option:contains('40')").index();


          Note: The function index returns a 0-indexed result that starts from 0, if you want 1-indexed result, then simply add 1 to it.



          Demo (using jQuery, which cheerio is based on):






          var index = $("option:contains('40')").index();

          console.log(index);

          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
          <select>
          <option value="">Select Size</option>
          <option value="2970"> 40 - only one left</option>
          <option value="2973"> 41 - only one left</option>
          <option value="2976"> 42 - only one left</option>
          </select>








          share|improve this answer

































            0














            You can try something like this:



            function getindex(searchValue) {
            // you probably want to have a class for them OR pass an array of options
            // to this function, because your html might have options in other places
            const inner = document.body.getElementsByTagName('option');
            for (let i = 0; i < inner.length; i++) {
            if (inner[i].innerHTML.includes(searchValue)) return i;
            }
            return 'no match'

            }
            // remember that indexing starts at 0,
            // thus option 'Select Size' - is the first one with the index 0
            // and `40` - is the index 1
            getindex('40'); // returns index 1





            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%2f53999431%2fhow-do-i-populate-the-index-number-of-a-option-value-list-with-cheerio%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









              1














              You can first select the <option> by text using the cheerio/jQuery selector :contains (the text could be anything), then call the function index to get its index inside its parent:



              var index = $("option:contains('40')").index();


              Note: The function index returns a 0-indexed result that starts from 0, if you want 1-indexed result, then simply add 1 to it.



              Demo (using jQuery, which cheerio is based on):






              var index = $("option:contains('40')").index();

              console.log(index);

              <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
              <select>
              <option value="">Select Size</option>
              <option value="2970"> 40 - only one left</option>
              <option value="2973"> 41 - only one left</option>
              <option value="2976"> 42 - only one left</option>
              </select>








              share|improve this answer






























                1














                You can first select the <option> by text using the cheerio/jQuery selector :contains (the text could be anything), then call the function index to get its index inside its parent:



                var index = $("option:contains('40')").index();


                Note: The function index returns a 0-indexed result that starts from 0, if you want 1-indexed result, then simply add 1 to it.



                Demo (using jQuery, which cheerio is based on):






                var index = $("option:contains('40')").index();

                console.log(index);

                <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                <select>
                <option value="">Select Size</option>
                <option value="2970"> 40 - only one left</option>
                <option value="2973"> 41 - only one left</option>
                <option value="2976"> 42 - only one left</option>
                </select>








                share|improve this answer




























                  1












                  1








                  1







                  You can first select the <option> by text using the cheerio/jQuery selector :contains (the text could be anything), then call the function index to get its index inside its parent:



                  var index = $("option:contains('40')").index();


                  Note: The function index returns a 0-indexed result that starts from 0, if you want 1-indexed result, then simply add 1 to it.



                  Demo (using jQuery, which cheerio is based on):






                  var index = $("option:contains('40')").index();

                  console.log(index);

                  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                  <select>
                  <option value="">Select Size</option>
                  <option value="2970"> 40 - only one left</option>
                  <option value="2973"> 41 - only one left</option>
                  <option value="2976"> 42 - only one left</option>
                  </select>








                  share|improve this answer















                  You can first select the <option> by text using the cheerio/jQuery selector :contains (the text could be anything), then call the function index to get its index inside its parent:



                  var index = $("option:contains('40')").index();


                  Note: The function index returns a 0-indexed result that starts from 0, if you want 1-indexed result, then simply add 1 to it.



                  Demo (using jQuery, which cheerio is based on):






                  var index = $("option:contains('40')").index();

                  console.log(index);

                  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                  <select>
                  <option value="">Select Size</option>
                  <option value="2970"> 40 - only one left</option>
                  <option value="2973"> 41 - only one left</option>
                  <option value="2976"> 42 - only one left</option>
                  </select>








                  var index = $("option:contains('40')").index();

                  console.log(index);

                  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                  <select>
                  <option value="">Select Size</option>
                  <option value="2970"> 40 - only one left</option>
                  <option value="2973"> 41 - only one left</option>
                  <option value="2976"> 42 - only one left</option>
                  </select>





                  var index = $("option:contains('40')").index();

                  console.log(index);

                  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                  <select>
                  <option value="">Select Size</option>
                  <option value="2970"> 40 - only one left</option>
                  <option value="2973"> 41 - only one left</option>
                  <option value="2976"> 42 - only one left</option>
                  </select>






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 1 at 22:44

























                  answered Jan 1 at 22:39









                  ibrahim mahriribrahim mahrir

                  22.2k41951




                  22.2k41951

























                      0














                      You can try something like this:



                      function getindex(searchValue) {
                      // you probably want to have a class for them OR pass an array of options
                      // to this function, because your html might have options in other places
                      const inner = document.body.getElementsByTagName('option');
                      for (let i = 0; i < inner.length; i++) {
                      if (inner[i].innerHTML.includes(searchValue)) return i;
                      }
                      return 'no match'

                      }
                      // remember that indexing starts at 0,
                      // thus option 'Select Size' - is the first one with the index 0
                      // and `40` - is the index 1
                      getindex('40'); // returns index 1





                      share|improve this answer




























                        0














                        You can try something like this:



                        function getindex(searchValue) {
                        // you probably want to have a class for them OR pass an array of options
                        // to this function, because your html might have options in other places
                        const inner = document.body.getElementsByTagName('option');
                        for (let i = 0; i < inner.length; i++) {
                        if (inner[i].innerHTML.includes(searchValue)) return i;
                        }
                        return 'no match'

                        }
                        // remember that indexing starts at 0,
                        // thus option 'Select Size' - is the first one with the index 0
                        // and `40` - is the index 1
                        getindex('40'); // returns index 1





                        share|improve this answer


























                          0












                          0








                          0







                          You can try something like this:



                          function getindex(searchValue) {
                          // you probably want to have a class for them OR pass an array of options
                          // to this function, because your html might have options in other places
                          const inner = document.body.getElementsByTagName('option');
                          for (let i = 0; i < inner.length; i++) {
                          if (inner[i].innerHTML.includes(searchValue)) return i;
                          }
                          return 'no match'

                          }
                          // remember that indexing starts at 0,
                          // thus option 'Select Size' - is the first one with the index 0
                          // and `40` - is the index 1
                          getindex('40'); // returns index 1





                          share|improve this answer













                          You can try something like this:



                          function getindex(searchValue) {
                          // you probably want to have a class for them OR pass an array of options
                          // to this function, because your html might have options in other places
                          const inner = document.body.getElementsByTagName('option');
                          for (let i = 0; i < inner.length; i++) {
                          if (inner[i].innerHTML.includes(searchValue)) return i;
                          }
                          return 'no match'

                          }
                          // remember that indexing starts at 0,
                          // thus option 'Select Size' - is the first one with the index 0
                          // and `40` - is the index 1
                          getindex('40'); // returns index 1






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 1 at 22:56









                          UmaUma

                          37615




                          37615






























                              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%2f53999431%2fhow-do-i-populate-the-index-number-of-a-option-value-list-with-cheerio%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

                              MongoDB - Not Authorized To Execute Command

                              How to fix TextFormField cause rebuild widget in Flutter

                              Npm cannot find a required file even through it is in the searched directory