Search code examples
javascriptgoogle-chromeloggingdevtoolsinspect

Repeated First Data In JavaScript Console Log Output By Chrome Inspect


Currently learning javascript, and I am curious on the console data output in Chrome inspect. Whenever I ran the HTML file for the first time, the console always output the first data two times. What could be the cause of it? Is there any significance to such when the JS script is running?

Chrome inspect console output

Code:


<html>
    <head>
        <title>JS Select Exercise</title>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <hr/>
            <div class="row">
                <div class="col-lg-6">
                    <div class="card">
                        <div class="card-body">
                            <select class="form-control" id="select_demo" onchange=onKidChange(this)></select>
                            <br/>
                            <h3 id="agevalue"></h3>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    <script>
        var jsonDataObject = [
            {"model": "A", "identifier": 1, "fields": {"name": "Stan", "age": "12"}},
            {"model": "B", "identifier": 2, "fields": {"name": "Brett", "age": "14"}}
        ]
        
        var kidModels = document.getElementById("select_demo")
        
        var kidAge = document.getElementById("agevalue")
        
        var kidTry
                
        function setup(){           
            for(var a = 0; a < jsonDataObject.length; a++){
                var option = document.createElement("option")
                option.innerHTML = jsonDataObject[a]["fields"].name
                option.value = jsonDataObject[a]["fields"].age
                kidModels.options.add(option)
                kidAge.innerHTML = kidModels.value
                kidTry = kidModels.value
                console.log(kidTry)
            }
        }
        
        function onKidChange(selected){
            for(var a=0; a < jsonDataObject.length; a++){
                if(selected.value == jsonDataObject[a]["fields"].age){
                    kidAge.innerHTML = jsonDataObject[a]["fields"].age
                    kidTry = jsonDataObject[a]["fields"].age
                    console.log(kidTry)
                }
            }
        }
        
        window.onload = setup
    </script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
</html>

Thanks!


Solution

  • In for loop of setup, default selected value for dropdown is the first element of array. And you are always printing this value to console.

       var jsonDataObject = [
                {"model": "A", "identifier": 1, "fields": {"name": "Stan", "age": "12"}},
                {"model": "B", "identifier": 2, "fields": {"name": "Brett", "age": "14"}}
            ]
            
            var kidModels = document.getElementById("select_demo")
            
            var kidAge = document.getElementById("agevalue")
            
            var kidTry
                    
            function setup(){           
                for(var a = 0; a < jsonDataObject.length; a++){
                    var option = document.createElement("option")
                    option.innerHTML = jsonDataObject[a]["fields"].name
                    option.value = jsonDataObject[a]["fields"].age
                    kidModels.options.add(option)
                    kidAge.innerHTML = kidModels.value
                    kidTry = kidModels.value
                    console.log(kidTry,'----')
                }
            }
            
            function onKidChange(selected){
                for(var a=0; a < jsonDataObject.length; a++){
                    if(selected.value == jsonDataObject[a]["fields"].age){
                        kidAge.innerHTML = jsonDataObject[a]["fields"].age
                        kidTry = jsonDataObject[a]["fields"].age
                        console.log(kidTry,'++++')
                    }
                }
            }
            
            window.onload = setup
    <html>
        <head>
            <title>JS Select Exercise</title>
            <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
        </head>
        <body>
            <div class="container">
                <hr/>
                <div class="row">
                    <div class="col-lg-6">
                        <div class="card">
                            <div class="card-body">
                                <select class="form-control" id="select_demo" onchange=onKidChange(this)></select>
                                <br/>
                                <h3 id="agevalue"></h3>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </body>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
    </html>