why does the first code work and the second doesn't work?












-1















when I put div.main as a separated condition the code doesn't work



<div class="user-panel main"> 
<input type="text" name="login">
</div>




document.querySelector("div.user-panel.main input[name='login']").style.backgroundColor = "red"; // this code works
document.querySelector("div.user-panel div.main input[name='login']").style.backgroundColor = "red"; // this code doesn't work









share|improve this question























  • remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

    – Nick Parsons
    Nov 25 '18 at 3:30
















-1















when I put div.main as a separated condition the code doesn't work



<div class="user-panel main"> 
<input type="text" name="login">
</div>




document.querySelector("div.user-panel.main input[name='login']").style.backgroundColor = "red"; // this code works
document.querySelector("div.user-panel div.main input[name='login']").style.backgroundColor = "red"; // this code doesn't work









share|improve this question























  • remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

    – Nick Parsons
    Nov 25 '18 at 3:30














-1












-1








-1








when I put div.main as a separated condition the code doesn't work



<div class="user-panel main"> 
<input type="text" name="login">
</div>




document.querySelector("div.user-panel.main input[name='login']").style.backgroundColor = "red"; // this code works
document.querySelector("div.user-panel div.main input[name='login']").style.backgroundColor = "red"; // this code doesn't work









share|improve this question














when I put div.main as a separated condition the code doesn't work



<div class="user-panel main"> 
<input type="text" name="login">
</div>




document.querySelector("div.user-panel.main input[name='login']").style.backgroundColor = "red"; // this code works
document.querySelector("div.user-panel div.main input[name='login']").style.backgroundColor = "red"; // this code doesn't work






javascript dom jsdom






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 25 '18 at 3:27









Abdullah MorsyAbdullah Morsy

62




62













  • remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

    – Nick Parsons
    Nov 25 '18 at 3:30



















  • remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

    – Nick Parsons
    Nov 25 '18 at 3:30

















remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

– Nick Parsons
Nov 25 '18 at 3:30





remove the div.main. So change your second selector to document.querySelector("div.user-panel.main input[name='login']")

– Nick Parsons
Nov 25 '18 at 3:30












2 Answers
2






active

oldest

votes


















2














When your selectors are combined with a space - a descendant combinator - it's called a descendant selector. So



document.querySelector("div.user-panel  div.main input[name='login']")


is looking for a input[name='login'] inside a div.main inside a div.user-panel.



Since in your html it's just a single div with 2 classes, this selector doesn't find anything.



It would work, however, if your html was looking like this:



<div class="user-panel">
<div class="main">
<input type="text" name="login">
</div>
</div>





share|improve this answer

































    0














    A space in a query selector denotes one element is inside another. The second line is looking for input[name='login'] contained in div.main, which is contained within another div (div.user-panel).






    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%2f53464393%2fwhy-does-the-first-code-work-and-the-second-doesnt-work%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









      2














      When your selectors are combined with a space - a descendant combinator - it's called a descendant selector. So



      document.querySelector("div.user-panel  div.main input[name='login']")


      is looking for a input[name='login'] inside a div.main inside a div.user-panel.



      Since in your html it's just a single div with 2 classes, this selector doesn't find anything.



      It would work, however, if your html was looking like this:



      <div class="user-panel">
      <div class="main">
      <input type="text" name="login">
      </div>
      </div>





      share|improve this answer






























        2














        When your selectors are combined with a space - a descendant combinator - it's called a descendant selector. So



        document.querySelector("div.user-panel  div.main input[name='login']")


        is looking for a input[name='login'] inside a div.main inside a div.user-panel.



        Since in your html it's just a single div with 2 classes, this selector doesn't find anything.



        It would work, however, if your html was looking like this:



        <div class="user-panel">
        <div class="main">
        <input type="text" name="login">
        </div>
        </div>





        share|improve this answer




























          2












          2








          2







          When your selectors are combined with a space - a descendant combinator - it's called a descendant selector. So



          document.querySelector("div.user-panel  div.main input[name='login']")


          is looking for a input[name='login'] inside a div.main inside a div.user-panel.



          Since in your html it's just a single div with 2 classes, this selector doesn't find anything.



          It would work, however, if your html was looking like this:



          <div class="user-panel">
          <div class="main">
          <input type="text" name="login">
          </div>
          </div>





          share|improve this answer















          When your selectors are combined with a space - a descendant combinator - it's called a descendant selector. So



          document.querySelector("div.user-panel  div.main input[name='login']")


          is looking for a input[name='login'] inside a div.main inside a div.user-panel.



          Since in your html it's just a single div with 2 classes, this selector doesn't find anything.



          It would work, however, if your html was looking like this:



          <div class="user-panel">
          <div class="main">
          <input type="text" name="login">
          </div>
          </div>






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 25 '18 at 3:51

























          answered Nov 25 '18 at 3:34









          shkapershkaper

          1,3511814




          1,3511814

























              0














              A space in a query selector denotes one element is inside another. The second line is looking for input[name='login'] contained in div.main, which is contained within another div (div.user-panel).






              share|improve this answer




























                0














                A space in a query selector denotes one element is inside another. The second line is looking for input[name='login'] contained in div.main, which is contained within another div (div.user-panel).






                share|improve this answer


























                  0












                  0








                  0







                  A space in a query selector denotes one element is inside another. The second line is looking for input[name='login'] contained in div.main, which is contained within another div (div.user-panel).






                  share|improve this answer













                  A space in a query selector denotes one element is inside another. The second line is looking for input[name='login'] contained in div.main, which is contained within another div (div.user-panel).







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 25 '18 at 3:40









                  tshimkustshimkus

                  819920




                  819920






























                      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%2f53464393%2fwhy-does-the-first-code-work-and-the-second-doesnt-work%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

                      Wiesbaden

                      Marschland

                      Dieringhausen