Hadar Shavit
Hadar Shavit

Reputation: 149

code that displays words, JS Jquery

Code Link: http://jsbin.com/lozifokuzi/1/edit?html,js,output should display 16 words but it displays only 15 words (The words written in Hebrew). The code is written in languages ​​JavaScript and jQuery.

$(document).ready(function () {
// creat array of objects, DetermineIDs
var words = new Array(16);
for (var i = 0; i < words.length; i++) {
    words[i] = new Object();
    words[i].id = i + 1;
}
                
//insert into objects words
               
words[0].word = "קוף";
words[1].word = "קוף";
words[2].word = "אריה";
words[3].word = "אריה";
words[4].word = "נמר";
words[5].word = "נמר";
words[6].word = "טלפון";
words[7].word = "טלפון";
words[8].word = "מחשב";
words[9].word = "מחשב";
words[10].word = "מקלדת";
words[11].word = "מקלדת";
words[12].word = "אוגר";
words[13].word = "אוגר";
words[14].word = "עכבר";
words[15].word = "עכבר";
//Determine locations
                
                var ret=Random(loc);
                
                var random = 0;
                for (var i = 0; i < words.length; i++) {
                    words[i].loca=ret[0];
                    loc=ret[1];
                    ret = Random(loc);
                   
                          }
                
                
                    
              //write the words
                
                for (var i = 0; i < 16; i++) {
                    
                    $("#c" + (words[i].loca)).html(words[i].word);
                }
                
            });
            function RandomC(ezer, random) {

                for (var i = 0; i <= 16; i++) {
                    if (ezer[i] == random) {

                        return true;


                    }
                }
                return false;
            }
            function Random(lq) {
                var ezer = new Array(16);
                for (var i = 0; i < 16; i++) {
                    ezer[i] = lq[i];
                }

                var random = 0;
                while ((random < 1 || random > 17) || RandomC(ezer, random)) {

                    random = parseInt(Math.random() * 100);
                }


                for (var i = 0; i < lq.length; i++) {
                    if (lq[i] == null) {
                        ezer[i] = random;
                        break;
                    }
                }
                var arr = new Array(2);
                arr[0] = random;
                arr[1] = ezer;
                return arr;
            }
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <title></title>
    
</head>
<body>
    <article>
        <div id="l1">
            <p id="c1"></p>
            <p id ="c2"></p>
            <p id="c3"></p>
            <p id="c4"></p>
        </div>
        <div id="l2">
            <p id="c5"></p>
            <p id="c6"></p>
            <p id="c7"></p>
            <p id="c8"></p>
        </div>
        <div id="l3">
            <p id="c9"></p>
            <p id="c10"></p>
            <p id="c11"></p>
            <p id="c12"></p>
        </div>
        <div id="l4">
            <p id="c13"></p>
            <p id="c14"></p>
            <p id="c15"></p>
            <p id="c16"></p>
        </div>
    </article>
</body>
</html>

Can anyone help?

Upvotes: 0

Views: 54

Answers (1)

guramidev
guramidev

Reputation: 2238

You have 17 in funciton Random() while loop:

   while ((random < 1 || random > 17) || RandomC(ezer, random)) 
   {
      random = parseInt(Math.random() * 100);
   }

make it 16:

   while ((random < 1 || random > 16) || RandomC(ezer, random)) 
   {
      random = parseInt(Math.random() * 100);
   }

You problem is that you have 16 element from 1 to 16, and your random function gives 16 random numbers from 1 to 17, in case returned range has number 17 it lacks something from 1 to 16, which means your p element of that nubmer doesn't get filled with content.

Upvotes: 1

Related Questions