DOM operations in JavaScript

DOM operation

Is a document object model, which is a method for JavaScript to manipulate html documents

DOM operation methods:

       1, Get the object of the operation, that is, the label of the operation , adopt JavaScript Defined DOM Manipulate function methods to get label objects .
       2, adopt JavaScript Defined DOM Operation function method pair html Perform actions on label objects

How to get the label object by DOM operation:

  • Easy to use, poor compatibility (not supported by low version IE browser)

      var variable = document.querySelector('condition');
            Get entire html The first eligible label object in the file
            The execution result is a separate label object
            DOM Operation can directly operate on the label object of an object.
    
      var variable = Label object.querySelectorAll('condition');
             Gets all eligible label objects in the label object
    
          If there are no eligible label objects ,The execution result is an empty array ,  (array.length The array that is 0 is an empty array)
    
    
      var variable = document.querySelectorAll('condition');
            Get entire html All eligible label objects in the file
            The execution result is a pseudo array
            The data value stored in each cell in the pseudo array is the qualified label object
    
            DOM Operations cannot directly manipulate pseudo arrays of label objects.
            Must be a pseudo array[Index subscript] Get a label object for DOM operation, perhaps
             Loop through the pseudo array to get each independent label object DOM operation.
    
    • Supported conditional syntax:

        All html css All supported syntax properties can be defined:
               'Label name'
               '.class Attribute value'
               '#'id attribute value'
               '[attribute="Attribute value"]'
               'ul>li'
               ... (As long as it is html , css Everything supported was OK)
      
  • Good compatibility and inconvenient use

      var variable = document.getElementById('id Attribute value');
              The result is a separate label object
    
      var variable = document.getElementByClassName('class Attribute value') ;
             The result is a pseudo array , out of commission forEach
      
      var variable = document.getElementsByTagName('Label name');
                          The result is a pseudo array
                          No forEach
    
      var variable = document.getElementsByName('label name Attribute value');
                          The result is a pseudo array
                          sure forEach   
    

Summary:

      document.querySelector('condition');
             Get entire html The first eligible label object in the document.
             Gets a separate label object , Can be executed directly DOM operation.
             You can also obtain qualified label objects from the obtained label objects   
             Label object.querySelector('condition');
             If there are no eligible label objects , The result is null
             
      document.querySelectorAll('condition');
            Get entire html All eligible label objects in the document
            Gets a pseudo array of label objects , 
                Cannot be executed directly DOM operation , A pseudo array is required[Index subscript] Get an independent label object to execute DOM operation , Or loop through the pseudo array to get each independent label object for execution DOM operation.
            You can also obtain qualified label objects from the obtained label objects
             Label object.querySelectorAll('condition');

       If there are no eligible label objects , The result is null
             array.length The array that is 0 is an empty array.

I DOM content operation

Label content:
1. Label object innerHTML
Support label resolution

      obtain 
         var variable = Label object.innerHTML ;

       set up
         Label object.innerHTML = ''  ;

2. Label object innerText
Label resolution is not supported

      obtain
        var variable = Label object.innerText  ;
      set up
        Label object.innerText = '' ;

The result obtained and the content set are in string format

II. Attribute operation of DOM tag

Attribute actions for Tags:
1. The tag supports properties that can be operated directly

           id         id attribute
           className  class attribute
           title      title attribute

        Operational syntax:
            obtain:
              var variable = Label object.id
              var variable = Label object.ClassName
              var variable = Label object.title

            set up:
              Label object.id = Attribute value
              Label object.ClassName = Attribute value
              Label object.title = Attribute value

            Each type of tag directly supports different attributes.

2. Boolean attributes supported by tags

         Boolean attribute
           The property name is the same as the property value 
             (Selected by default, Multiple choice, read-only, Disable ....)
           set up
            Label object.Boolean attribute = Attribute value
           obtain
            var variable = Label object.Boolean attribute

          The operation result of Boolean property, whether obtained or set , The attribute value must be true(implement) / false(I won't support it)

3. General operation method of label attribute, except Boolean attribute
The result obtained is a string type

          set up
            Label object.setAttribute('attribute', Attribute value);

          obtain
            var variable = Label object.getAttribute = ('attribute');

          delete
            Label object.removeAttribute('attribute');
<script>
        var oDiv = document.querySelector('div');
        var oA = document.querySelector('a');
        var oIpt = document.querySelector('input');

        console.dir( oDiv );  // Console output attribute value
        console.dir( oA );

   // Tag supported attribute id class title attribute        
        // set up
        oDiv.id = 'Set id Attribute value' ;
        oDiv.className = 'Set class Attribute value' ;
        oDiv.title = 'Set title';
        // obtain
        var res1 = oDiv.id ;
        console.log( res1 );
        var res2 = oDiv.className ;
        console.log( res2 );
  // General operation method of label attribute
        // obtain
        // div does not support direct manipulation of the name attribute
        // The result obtained is undefined
        // Obtain the attribute value of the div tag name attribute through the general operation method
        var oDivName = oDiv.getAttribute( 'name' );
        console.log( oDivName );
        // The a tag supports the name attribute, which can be operated directly
        var oAName1 = oA.name ;
        console.log( oAName1 );
        // The name attribute can be manipulated using common methods
        var oAName2 = oA.getAttribute('name') ;
        console.log( oAName2 );
         // set up
        oDiv.setAttribute('name' , 'I am js Set');
        console.log(  oDiv );
        // delete
        oA.removeAttribute( 'name' );

   // Boolean attribute 
        // obtain
        var res = oIpt.checked ;
        console.log( res );
        // set up
        oIpt.checked = false ;
    </script>

Three label data

General labels are label objects used for label content innerHTML or tag object innerText operation data, special taginputtextarea Select > optionuse tag object value to manipulate data

  • Get data:

        In general , input By default, such tags have no data , Generally, data values are obtained in cooperation with events  .          
           var variable = Label object.value;
           Through object.value The data obtained must be of string type.if necessary ,Can be converted to numeric type         
    
  • Setting data:

         Label object.value = Data value;
    

select>option

        If option The label is not set value attribute , The result of getting data is option Label content.
        If option Label setting value attribute , The result of getting data is value Property value of the property.
               
      In the actual project option Label general settings value The property value is an integer value starting from 0.

Four click event

Bind the click event to the tag through the event listening syntax,
Label object addEventListener('click, callback function ');
The callback function can be an anonymous function / function name
(the callback function defines the program to be executed.)

<script>
         // Get div tag object
         var oDiv = document.querySelector('div');

         // Bind click event (anonymous function)
         oDiv.addEventListener('click' , function(){console.log(111)}) ;

         // Bind click event (function name)
         oDiv.addEventListener('click',fun);
         function fun(){
             console.log(222);
         }

Five class attributes

Operation method of class attribute:
The class attribute can have multiple attribute values and has special operation methods

      1,newly added class Attribute value
         Label object.classList.add(New attribute value)
         You can add one or more attribute values at a time , Multiple attribute values are separated directly by commas.
         
      2,delete class Attribute value
         Label object.classList.remove(Delete attribute value)

      3,replace class Attribute value
         Label object.classList.replace(Original attribute value,New attribute value)

      4,switch class Attribute value
          Label object.classList.toggle(Attribute value)
          If the original state has attribute values, the deletion operation is performed , If there is no attribute value in the original state, perform the add operation.
 <div class="s1 s2 s3 s4"></div>
     <script>
         var oDiv = document.querySelector('div');
         // New class attribute value
         oDiv.classList.add('m1');

         //Delete class attribute value
         oDiv.classList.remove('s1');
         
         //Replace class attribute value
         oDiv.classList.replace('s2' , 'm2');

         //Toggle class attribute values
         oDiv.classList.toggle('t2'); // The original class attribute value does not have t2, add t2
         oDiv.classList.toggle('m2'); // The original class attribute value has m2. Delete m2

Vi. css style setting and acquisition

set up

DOM operation css Style:
There is only one syntax for setting css style in JavaScript

    Label object.style.css attribute = css Attribute value 
       The setting result is inline style.

1. In JavaScript - is a minus sign to perform subtraction, so the css attribute with - should be written in the form of small hump syntax For example: font size - > fontsize
2. If there is a unit, the unit must be written
3. The syntax form of attribute value is exactly the same as that of css attribute value
4. The grammatical form is an inline grammatical form

<button>set up</button>
     <div>I am div</div>
     <script>
         // Get div tag object
         var oBut = document.querySelector('button');

         // Get button label object
         var oDiv = document.querySelector('div');

         // Add a click event to the button tag
         oBut.addEventListener('click',function(){
             
            //Style div labels
             oDiv.style.color = 'red';
             oDiv.style.width = '62px';
             oDiv.style.height = '40px';
             oDiv.style.backgroundColor = 'pink';
             oDiv.style.fontSize = '15px';
             oDiv.style.border = '3px double #f5f5f5';
             oDiv.style.textAlign = 'center';
             oDiv.style.lineHeight = '40px';
             oDiv.style.marginTop = '20px';
         })

obtain

css style attribute value acquisition:

Syntax 1: only attribute values of inline styles can be obtained

             var variable = Label object.style.attribute

Syntax 2: acquisition of non inline styles

            var variable = window.getComputedStyle(Label object).attribute ;
               You can get any syntax setting css style , Get results with units , sure parseInt() Get integer part.

Compatibility issues:

                window.getComputedStyle(Label object).attribute
                  Standard browser syntax
                  
                Label object.currentStyle.attribute
                Low version IE Browser syntax
     // Get label object
        var oDiv = document.querySelector('div');
          // Get css Style 
          // Inline can use label objects style. attribute
          var dColor = oDiv.style.color ;
          console.log( dColor );

         // Acquisition of non inline styles
         var resColor = window.getComputedStyle( oDiv ).color ;
         console.log( resColor );

VII. Occupation of labels

The box model attribute in css style determines the occupancy of a label

       Label object.offsetWidth 
       Label object.offsetHeight
               content + padding + border

       Label object.clientWidth
       Label object.clientHeight
               content + padding

       Label object.clientTop
       Label object.clientLeft
               upper , Width of left border line

       Label object.offsetTop
       Label object.offsetLeft
              The current label is distance JavaScript Locate the spacing of the parent
              Locate who the parent is , Object stored in label.offsetParent Attribute.
               1,  Label has no parent / Parent not positioned
                      Locate parent yes body ,that is HTML file
               2,  The label has a parent and the parent has a location
                      Locating the parent is the parent element
               3,  The label has fixed positioning
                      Locate parent yes null , That is, windows
   <style>
         *{
            margin: 0;
            padding: 0;
        }

        body{
            height: 5000px;
        }

        div{
            width: 600px;
            height: 600px;
            margin: 100px auto;
            background: pink;
            border: 3px solid #000;
            position: relative;
        }

        div p{
            width: 100px;
            height: 100px;
            padding: 50px;
            margin: 150px;
            border: 10px solid #000;
            background: cyan;
            position: absolute;
            /* display: none; */
        }
    </style>
    ...
    <div>
        <p></p>
    </div>

     ...
         // Get label object
         var oDiv = document.querySelector('div');
         var oP = document.querySelector('p');


         // Get the occupation of div tag
         // Offsetwidth offsetHeight (content + padding +border)
         console.log(oDiv.offsetHeight);  // 606
         console.log(oDiv.offsetWidth);   //606


         // clientWidth clientHeight (content + padding)
         console.log(oDiv.clientHeight);   //600
         console.log(oDiv.clientWidth);    //600

         // clientTop clientLeft (width of upper left border line)
         console.log(oDiv.clientTop);  //3
         console.log(oDiv.clientLeft);  //3

         console.log(oP.clientTop);  //10
         console.log(oP.clientLeft);  //10

         // Locate parent
         console.log(oP.offsetParent);  
         console.log( oP.offsetTop ) ;  // 150
        console.log( oP.offsetLeft ) ;  //150

Eight top-level objects for DOM operations

      document                  ->  That is, the whole HTML file
      document.documentElement  ->  html label
      document.body             ->  body label
      document.head             ->  head label
      document.title            ->  title label

Keywords: Javascript Front-end html

Added by vboctor on Tue, 11 Jan 2022 14:50:18 +0200