我在编写JavaScript输出时遇到问题

时间:2018-01-28 01:00:40

标签: javascript html arrays

这是我目前的数组应用程序代码。我只是在输出数组编号时遇到了麻烦。

数组输出(100项):

11,64,39,97,69,28,94,49,31,45,9,29,65,53,31,58,100,81,79,24,99,27,39,58,35,39,
10,24,98,26,84,70,42,93,17,69,69,17,12,4,21,75,86,25,82,32,69,21,42,24,42,100,
61,25,97,60,12,100,40,40,10,75,78,86,25,3,11,65,44,17,35,4,78,77,53,5,53,18,19,
26,31,51,6,68,58,49,54,27,58,6,98,51,79,21,32,38,34,35,83,70

在位置20插入的值99--在此执行了80次操作 插入

Here是我的JSFiddle。

<html>
<body>
<!--For moving element in center-->
<div style='width:400px;margin: 100px auto auto;'>
    <!--To show the status of operation -->
    <p id="status"></p>


    <!--Some style to look page better-->
    <!--Added id to every input element, to refer it in script-->
    <!--change your input type to number, now it will only accept number.-->
    <div class='box'>
        <p>Enter Array Size:</p>
        <input style="width: 50px;" type="number" value="100" id="etArraySize"/>
        <input type="button" value="Create Array" id="btnCreateArray"/>
    </div>

    <div class='box'>
        <p>Enter Location:</p>
        <input type="number" value = "0" id="etArrayIndex"/>
        <p>Enter Value to Insert:</p>
        <input type="number" value="0" id="etArrayValue"/>
        <input type="button" value="Insert Into Array" id="btnInsertValue"/>
    </div>


    <div class='box'>
        <p>Enter Value to Find:</p>
        <input type="number" value="0" id="etArrayFind"/>
        <input type="button" value="Search Array" id="btnFindValue"/>
    </div>

    <!--It will display the operation count-->
    <div class="box" id="counter">

    </div>
</div>
</body>
<!--Simple yet beautiful style-->
<style>
.box{
    padding: 2px 10px 10px;
    background-color:#FAFAFA;
   box-shadow:0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2);
   border-radius: 2px;
   margin:8px;
}

</style>

<script>
    //Script started.
    //global variable myArray.
    var myArray;
    //For count the number of operation when inserting,
    var count=0;

    //Reference all input element by their id to variable,
    var etArraySize = document.getElementById("etArraySize");
    var etArrayIndex = document.getElementById("etArrayIndex");
    var etArrayValue = document.getElementById("etArrayValue");
    var etArrayFind = document.getElementById("etArrayFind");

    var btnCreateArray = document.getElementById("btnCreateArray");
    var btnInsertValue = document.getElementById("btnInsertValue");
    var btnFindValue = document.getElementById("btnFindValue");

    var mStatus = document.getElementById("status");

    //Adding click listener to all 3 buttons.
    btnCreateArray.addEventListener("click",function(){
        //If button create array click, create array of provided size in etArraySize.
        createArray(etArraySize.value);
    });

    btnInsertValue.addEventListener("click",function () {
        //Insert into array.
        //parseInt will convert the text to integer.
        //You may remove this, but this is good practise.
       insertIntoArray(myArray,parseInt(etArrayIndex.value),parseInt(etArrayValue.value));
    });

    btnFindValue.addEventListener("click",function () {
        //search the array.
        SearchArray(myArray,parseInt(etArrayFind.value));
    });

    //create array function with a single param e means size of array.
    function createArray(e){
        //Convert the value in integer.
        var val = parseInt(e);
        //Initialize global myArray with given size.
        myArray = Array(val);
        //Loop through it's length.
        for(var i=0;i<myArray.length;i++){
            //Assign the random value which is between 1 <= x <= 100
            myArray[i] = Math.floor(Math.random()*100)+1;
        }
        //Show the message at top of screen, where <p id="status"..... is defined.
        showMessage("Array created of size " + val);
    }

    //Insert Array function.
    function insertIntoArray(array,index,value) {
        //First get the value which will replace by new value.
        var oldValue = array[index];
        //Now assign the new value to given index,
        array[index] = value;
        //You did new operation on array, count it by 1.
        count++;

        //Loop through array from its last index to given index + 2.
        //because array[index] contains new value.
        //array[index] + 1 contains the replace value, as it shift by one, (manually)
        //and all other index also shift by one through loop.
        for(var i=array.length-1; i>index+1;i--){
            //shift value to upper index.
            array[i] = array[i-1];
            count++;
            //Operation count ++.
        }
        //Check if the given index is not the last element.
        if(index < array.length-1){
            //After loop, put the replaceValue to arrayIndex[index+1]
            array[index+1] = oldValue;
            count++;
        }


        //Show the message at top.
        showMessage("Added " + value + " at position " + index);
        //Show the count at bottom.
        showCount(count);

    }


    function SearchArray(array,value) {
        //It will count the operation in SearchArray.
        //If you want to count this operation with previous function,
        //use count instead of searchCount.
        var searchCount=0;
        //to store the index, where the value is.
        var foundIndex = -1;
        //Loop through array and compare if the value exists at ith index or not.
        for(var i=0;i<array.length;i++){
            searchCount++;
            //If yes, save the index, break the loop.
            if(array[i] == value){
                foundIndex = i;
                break;
            }
        }

        //Check if value is found or not.
        //Display message according to operation.
        if(foundIndex== -1){
            showMessage("Element not found in array. Total Searched: " +searchCount);
        }else{
            showMessage("Element found at index: " + foundIndex + ", search count: " +searchCount);
            showCount(searchCount);
        }
    }


    function showMessage(e) {
        //it will set the given message to mStatus, defined at top.
        mStatus.innerHTML = e;
        //You may remove setTimeOut function, it will just remove the message after
        //5 second.
        setTimeout(function () {
            mStatus.innerHTML = "";
        },5000);
    }

    //To display message at the bottom, change it according to your need.
    function showCount(var e) {
        document.getElementById("counter").innerText = "Operation count on array: " + e;
        e = 0;
    }


</script>
</html>

1 个答案:

答案 0 :(得分:0)

我修改了一行代码。它现在似乎有效。 第186行:&#34;功能showCount(var e){&#34; to&#34; function showCount(e){&#34 ;; https://jsfiddle.net/c71wx59g/2/

&#13;
&#13;
<html>
<body>
<!--For moving element in center-->
<div style='width:400px;margin: 100px auto auto;'>
    <!--To show the status of operation -->
    <p id="status"></p>


    <!--Some style to look page better-->
    <!--Added id to every input element, to refer it in script-->
    <!--change your input type to number, now it will only accept number.-->
    <div class='box'>
        <p>Enter Array Size:</p>
        <input style="width: 50px;" type="number" value="100" id="etArraySize"/>
        <input type="button" value="Create Array" id="btnCreateArray"/>
    </div>

    <div class='box'>
        <p>Enter Location:</p>
        <input type="number" value = "0" id="etArrayIndex"/>
        <p>Enter Value to Insert:</p>
        <input type="number" value="0" id="etArrayValue"/>
        <input type="button" value="Insert Into Array" id="btnInsertValue"/>
    </div>


    <div class='box'>
        <p>Enter Value to Find:</p>
        <input type="number" value="0" id="etArrayFind"/>
        <input type="button" value="Search Array" id="btnFindValue"/>
    </div>

    <!--It will display the operation count-->
    <div class="box" id="counter">

    </div>
</div>
</body>
<!--Simple yet beautiful style-->
<style>
.box{
    padding: 2px 10px 10px;
    background-color:#FAFAFA;
   box-shadow:0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2);
   border-radius: 2px;
   margin:8px;
}

</style>

<script>
    //Script started.
    //global variable myArray.
    var myArray;
    //For count the number of operation when inserting,
    var count=0;

    //Reference all input element by their id to variable,
    var etArraySize = document.getElementById("etArraySize");
    var etArrayIndex = document.getElementById("etArrayIndex");
    var etArrayValue = document.getElementById("etArrayValue");
    var etArrayFind = document.getElementById("etArrayFind");

    var btnCreateArray = document.getElementById("btnCreateArray");
    var btnInsertValue = document.getElementById("btnInsertValue");
    var btnFindValue = document.getElementById("btnFindValue");

    var mStatus = document.getElementById("status");

    //Adding click listener to all 3 buttons.
    btnCreateArray.addEventListener("click",function(){
        //If button create array click, create array of provided size in etArraySize.
        createArray(etArraySize.value);
    });

    btnInsertValue.addEventListener("click",function () {
        //Insert into array.
        //parseInt will convert the text to integer.
        //You may remove this, but this is good practise.
       insertIntoArray(myArray,parseInt(etArrayIndex.value),parseInt(etArrayValue.value));
    });

    btnFindValue.addEventListener("click",function () {
        //search the array.
        SearchArray(myArray,parseInt(etArrayFind.value));
    });

    //create array function with a single param e means size of array.
    function createArray(e){
        //Convert the value in integer.
        var val = parseInt(e);
        //Initialize global myArray with given size.
        myArray = Array(val);
        //Loop through it's length.
        for(var i=0;i<myArray.length;i++){
            //Assign the random value which is between 1 <= x <= 100
            myArray[i] = Math.floor(Math.random()*100)+1;
        }
        //Show the message at top of screen, where <p id="status"..... is defined.
        showMessage("Array created of size " + val);
    }

    //Insert Array function.
    function insertIntoArray(array,index,value) {
        //First get the value which will replace by new value.
        var oldValue = array[index];
        //Now assign the new value to given index,
        array[index] = value;
        //You did new operation on array, count it by 1.
        count++;

        //Loop through array from its last index to given index + 2.
        //because array[index] contains new value.
        //array[index] + 1 contains the replace value, as it shift by one, (manually)
        //and all other index also shift by one through loop.
        for(var i=array.length-1; i>index+1;i--){
            //shift value to upper index.
            array[i] = array[i-1];
            count++;
            //Operation count ++.
        }
        //Check if the given index is not the last element.
        if(index < array.length-1){
            //After loop, put the replaceValue to arrayIndex[index+1]
            array[index+1] = oldValue;
            count++;
        }


        //Show the message at top.
        showMessage("Added " + value + " at position " + index);
        //Show the count at bottom.
        showCount(count);

    }


    function SearchArray(array,value) {
        //It will count the operation in SearchArray.
        //If you want to count this operation with previous function,
        //use count instead of searchCount.
        var searchCount=0;
        //to store the index, where the value is.
        var foundIndex = -1;
        //Loop through array and compare if the value exists at ith index or not.
        for(var i=0;i<array.length;i++){
            searchCount++;
            //If yes, save the index, break the loop.
            if(array[i] == value){
                foundIndex = i;
                break;
            }
        }

        //Check if value is found or not.
        //Display message according to operation.
        if(foundIndex== -1){
            showMessage("Element not found in array. Total Searched: " +searchCount);
        }else{
            showMessage("Element found at index: " + foundIndex + ", search count: " +searchCount);
            showCount(searchCount);
        }
    }


    function showMessage(e) {
        //it will set the given message to mStatus, defined at top.
        mStatus.innerHTML = e;
        //You may remove setTimeOut function, it will just remove the message after
        //5 second.
        setTimeout(function () {
            mStatus.innerHTML = "";
        },5000);
    }

    //To display message at the bottom, change it according to your need.
    function showCount(e) {
        document.getElementById("counter").innerText = "Operation count on array: " + e;
        e = 0;
    }


</script>
</html>
&#13;
&#13;
&#13;