Link to home
Start Free TrialLog in
Avatar of TwinSpirit
TwinSpirit

asked on

JavaScript interactive Japanese puzzle won't work

I'm a second semester programming major. We are taking JavaScript and there is a case (Hanjie Interactive Puzzle) that I can't get to work.  Any help would be greatly appreciated
<head>
<!-- 
   New Perspectives on JavaScript, 2nd Edition
   Tutorial 4
   Case Problem 2

   Hanjie Puzzle
   Author: Beverly Hodges
   Date:   May 1, 2010

   Filename:         hanjie.htm
   Supporting files: blackbar.gif, jpf.css, jpf.jpg, puzzle.js
-->
 

   <title>Daily Hanjie Puzzle</title>
   <link href="jpf.css" rel="stylesheet" type="text/css" />
   <link href="stable.css" rel="stylesheet" type="text/css" />
   <script type = "text/javascript" src = "puzzle.js"></script>

</head>

<body>
<form id="hanjieForm" name="hanjieForm" action="">
<div id="page">

   <div id="header">
      <img src="jpf.jpg" alt="The Japanese Puzzle Factory" />

      <ul>
         <li><a href="#">Home</a></li>
         <li><a href="#">Online Puzzles</a></li>
         <li><a href="#">Store</a></li>
         <li><a href="#">Tips and Hints</a></li>
         <li><a href="#">Forum</a></li>
         <li><a href="#">Competitions</a></li>
         <li><a href="#">Site Map</a></li>
      </ul>
   </div>

   <ul id="column1">
      <li><a href="#">Akari</a></li>
      <li><a href="#">Divide by Box</a></li>
      <li><a href="#">Fillomino</a></li>
      <li><a href="#">Hanjie</a></li>
      <li><a href="#">Hashiwokakero</a></li>
      <li><a href="#">Heyawake</a></li>
      <li><a href="#">Hitori</a></li>
      <li><a href="#">Kakuro</a></li>
      <li><a href="#">Katagaku</a></li>
      <li><a href="#">Masugo</a></li>
      <li><a href="#">Masyu</a></li>
      <li><a href="#">Oekaki Logic</a></li>
      <li><a href="#">Shikaku</a></li>
      <li><a href="#">Sudoku</a></li>
      <li><a href="#">Suhai</a></li>
      <li><a href="#">Super Sudoku</a></li>
      <li><a href="#">Tenketsu</a></li>
      <li><a href="#">Tentai Show</a></li>
      <li><a href="#">Wordoku</a></li>
      <li><a href="#">Yajilin</a></li>
   </ul>



   <div id="column2">
   <table class="hanjie">
      <caption><strong>Hint: </strong> Panda</caption>
      <colgroup>
         <col class="firstCol" span="1" />
         <col class="mainTable" span="20" />
      </colgroup>
      <thead>
         <tr>
            <td class="firstCol"></td>
            <td>8<br />5</td><td>9<br />2<br />5</td><td>10<br />1</td><td>9<br />1</td>
            <td>8<br />5<br />2</td><td>6<br />6<br />1</td><td>5<br />7<br />1</td><td>1<br />8<br />1</td>
            <td>1<br />3<br />3<br />1</td><td>1<br />2<br />3<br />1<br />1</td>
            <td>1<br />3<br />3<br />2<br />1<br />1</td>
            <td>1<br />2<br />2<br />6<br />2</td>
            <td>1<br />4<br />2<br />1<br />1</td>
            <td>1<br />2<br />1<br />1</td>
            <td>1<br />1<br />1<br />1</td><td>1<br />2<br />1<br />1</td>
            <td>1<br />2<br />1<br />3<br />1<br />1</td>
            <td>3<br />3<br />1<br />7<br />1</td>
            <td>5<br />2<br />1<br />4<br />1<br />1</td>
            <td>7<br />7<br />1<br />1</td>
         </tr>
       </thead>

         <tr>
            <td class="firstCol">6</td>
            <td colspan="20" rowspan="25">
               <table id="puzzleCells">
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td></td>
                     <td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td></td>
                  </tr>
                  <tr>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td style="border-right: 1px solid red"></td><td class="dark"></td><td></td>
                     <td class="dark"></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td class="dark"></td>
                     <td class="dark"></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td class="dark"></td><td></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td></td><td></td><td></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td></td><td style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td></td><td></td><td></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td class="dark"></td><td></td>
                     <td></td><td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark" style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red">
                     </td><td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                     <td class="dark" style="border-bottom: 1px solid red"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td></td><td></td><td></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td></td><td class="dark"></td>
                     <td class="dark"></td><td></td><td style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td class="dark"></td><td></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td class="dark"></td><td class="dark"></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td class="dark"></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td class="dark"></td><td></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td class="dark"></td><td class="dark"></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td></td><td></td>
                  </tr>
                  <tr>
                     <td style="border-bottom: 1px solid red"></td><td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                     <td style="border-right: 1px solid red; border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td class="dark" style="border-bottom: 1px solid red"></td>
                     <td style="border-bottom: 1px solid red"></td><td style="border-bottom: 1px solid red"></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark"></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td></td><td class="dark"></td><td></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td></td>
                  </tr>
                  <tr>
                     <td></td><td></td><td class="dark"></td><td></td>
                     <td style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td><td></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td></td><td></td><td class="dark"></td>
                  </tr>
                  <tr>
                     <td></td><td></td><td></td><td class="dark"></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td></td><td></td><td></td>
                     <td></td><td style="border-right: 1px solid red"></td><td></td><td class="dark"></td>
                     <td></td><td></td><td style="border-right: 1px solid red"></td><td></td>
                     <td></td><td class="dark"></td><td class="dark"></td><td></td>
                  </tr>
                  <tr>
                     <td></td><td></td><td></td><td></td>
                     <td class="dark" style="border-right: 1px solid red"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td class="dark"></td><td class="dark"></td>
                     <td class="dark"></td><td class="dark"></td><td class="dark" style="border-right: 1px solid red"></td>
                     <td class="dark"></td>
                     <td class="dark"></td><td></td><td></td><td></td>
                  </tr>
               </table>
            </td>
         </tr>

         <tr>
            <td class="firstCol">7 1</td>
         </tr>
         <tr>
            <td class="firstCol">7 5 2</td>
         </tr>
         <tr>
            <td class="firstCol">8 2 3</td>
         </tr>
         <tr>
            <td class="firstCol">7 1 3</td>
         </tr>
         <tr>
            <td class="firstCol">7 4</td>
         </tr>
         <tr>
            <td class="firstCol">5 2</td>
         </tr>
         <tr>
            <td class="firstCol">5 1</td>
         </tr>
         <tr>
            <td class="firstCol">3 5 3</td>
         </tr>
         <tr>
            <td class="firstCol">1 6 4</td>
         </tr>
         <tr>
            <td class="firstCol">1 4 1 1 1 1</td>
         </tr>
         <tr>
            <td class="firstCol">1 4 2 1 1</td>
         </tr>
         <tr>
            <td class="firstCol">1 4 2 3</td>
         </tr>
         <tr>
            <td class="firstCol">1 7 2 1</td>
         </tr>
         <tr>
            <td class="firstCol">1 7 2 5</td>
         </tr>
         <tr>
            <td class="firstCol">1 6 2 5</td>
         </tr>
         <tr>
            <td class="firstCol">1 2 1 3</td>
         </tr>
         <tr>
            <td class="firstCol">1 2 2</td>
         </tr>
         <tr>
            <td class="firstCol">1 2 1</td>
         </tr>
         <tr>
            <td class="firstCol">1 1 1</td>
         </tr>
         <tr>
            <td class="firstCol">1 9</td>
         </tr>
         <tr>
            <td class="firstCol">1</td>
         </tr>
         <tr>
            <td class="firstCol">1 2 1</td>
         </tr>
         <tr>
            <td class="firstCol">2 1 2</td>
         </tr>
         <tr>
            <td class="firstCol">13</td>
         </tr>

   </table>


      <p>
         <input type="button" id="check" value="Check Solution" />
         <input type="button" id="uncheck" value="Hide Checked Solution" /><br />

         <label for="checkCount">Cells remaining</label>
         <input type="text" id="checkCount" />
      </p>
   </div>

   <div id="column3">
      <h3>To Play</h3>
      <p>
         <strong>Hanjie</strong> is a Japanese logic puzzle played on a blank grid
         of varying sizes. At the top of each column and to the right of each row are
         sets of numbers that indicate how many cells in that column or row must be colored
         in, working from the top of the column or from the left of the row.
      </p>
      <p>For example a column or row entry of "3 8 1" indicates that there is a block
         of three consecutive darkened cells followed at some point by eight filled-in
         cells and ending finally with one filled-in cell. The gap between consecutive
         groups of filled-in cells has to be determined by clues provided in other
         rows and columns in the grid.</p>
      <p>A completed grid shows a pixelated image. A hint describing the image
         is usually provided with the puzzle. For strategy hints, view the
         <a href="#">Hanjie Strategy</a> page.</p>
      <p>To play Hanjie online, click the cells in the provided grid to toggle the
         cell color between black and white. To check your solution, click the
         <strong>Check Solution</strong> button. The page will highlight
         incorrectly-marked cells in red and display the number of cells that
         still need to be marked.</p>
      <p>
         <input type="button" id="solution" value="Show Solution" />
         <input type="button" id="hide" value="Reset Grid" />
      </p>

   </div>

</div>
</form>
</body>

</html>

puzzle.js

/*
   New Perspectives on JavaScript, 2nd Edition
   Tutorial 4
   Case Problem 2

   Author:   Beverly Hodges 
   Date:     May 1, 2010 

   Filename:  puzzle.js

   -------------------------------------------------------------

Function List:
   setPuzzle()
      Initializes event handlers for the cells within the Hanjie
      table. 

   changeColor()
      Toggles the background color of the active cell between
      black and white

   showSolution()
      Shows the solution of the Hanjie puzzle

   hideSolution()
      Hides the solution of the Hanjie puzzle

   checkSolution()
      Checks the user's solution of the Hanjie puzzle

   uncheckSolution()
      Restores the user's solution of the Hanjie puzzle
      to its original state

   -------------------------------------------------------------
   Global Variable List:

   allCells
      An object variable referencing all of the clickable cells
      within the Hanjie puzzle


   -------------------------------------------------------------
*/

window.onload = setPuzzle();

var allCells = new Array();

function setPuzzle() {

	var puzzleTable = document.getElementById("puzzleCells");
	 allCells = puzzleTable.getElementByID("td");

	
	for (var i = 0; i< allCells.length; i ++) {
		allCells[i].style.background.display = "white";
		allCells[i].onclick = changeColor;
	}
	
	document.getElementById("solution").onclick = showSolution;
	document.getElementById("hide").onclick	= hideSolution;
	document.getElementById("check").onclick = checkSolution;
	document.getElementById("uncheck").onclick = uncheckSolution;	
	
}

function changeColor() {
	
	
	if (allCells[i].style.background.display == "black") {
	allCells[i].style.background.display = "white";
	}else{
	allCells[i].style.background.display = "black";
	}

}

function showSolution() {

	for (var i = 0; i< allCells.length; i ++) {
	   if (allCells[i].className == "dark") {
	   allCells[i].style.background.display = "black";
	   }else{	   
	   allCells[i].style.background.display = "white";
	   }
	 
	 checkCount = "0";
	 }
}

function hideSolution() {

	for (var i = 0; i< allCells.length; i ++) {
		allCells[i].style.background.display = "white";
		}
	checkCount = " ";
}

function checkSolution() {
	var checkCount = 0;
	
	for (var i = 0; i< allCells.length; i ++) {
		if (allCells[i].className == "dark" && allCells[i].style.background.display == "black") {
		allCells[i].style.background.display = "red";
		} else if (allCells[i].className == "dark" && allCells[i].style.background.display == "white"){
		checkCount ++;
		}
		return checkCount.value;
	}
	
}

function uncheckSolution() {

	for (var i = 0; i< allCells.length; i ++) {
		if (allCells[i].style.background.display == "red") {
		allCells[i].style.background.display = "black";
		}
	checkCount = " ";
	}
}

Open in new window

blackbar.gif
jpf.jpg
Avatar of Michel Plungjan
Michel Plungjan
Flag of Denmark image

EITHER use

window.onload = setPuzzle; // assign the function to the event handler - note the lack of brackets

OR

window.onload=function() {
  setPuzzle(); // execute function now
}

when you do

window.onload = setPuzzle();
it is executed when the statement is met, and the javascript interpreter expects a function returned from setPuzzle()
Second problem is

    allCells = puzzleTable.getElementByID("td");

that is not valid. it is getElementById, but you do not want that, you want

    allCells = puzzleTable.getElementsByTagName("td");


For me to see the rest, I think I need the CSS files too
Avatar of TwinSpirit
TwinSpirit

ASKER

Thank you so much for your help! Here is the css file.

/*
   New Perspectives on JavaScript, 2nd Edition
   Tutorial 4
   Case Problem 2

   JPF Style Sheet

   Filename:         jpf.css
   Supporting Files: left.jpg, topleft.jpg, topright.jpg

*/

body                  {margin: 0px; font-family: Verdana, Geneva, sans-serif;
                       background: white url(blackbar.gif) repeat-y top left}

#page                 {width: 950px}

#header               {margin-bottom: 10px}

#header ul            {list-style-type: none; padding: 0px; margin: -20px 0px 0px 15px}
#header li            {display: inline; color: rgb(254, 232, 130);
                       font-size: 10px; margin: 0px 10px; padding: 0px}
#header a             {color: rgb(254, 232, 130); text-decoration: none}
#header a:hover       {color: rgb(211,254,106)}

#column1              {float: left; width: 125px;
                       list-style-type: none; font-size: 12px; padding: 10px;
                       margin: 0px 0px 20px 0px}
#column1 a            {display: block; color: rgb(254, 232, 130); width: 100%;
                       text-decoration: none; margin: 10px 2px; padding: 0px}
#column1 a:hover      {color: black; background-color: rgb(211,254,106)}

#column2              {float: left; margin-left: 10px}
#column2 h3           {font-size: 14px; margin: 10px 0px 0px 0px}
#column2 p            {font-size: 10px; margin: 10px 0px; text-align: center}

#column3              {float: left; width: 250px; margin-left: 25px}

#column3 h3           {font-size: 18px; letter-spacing: 4px; font-weight: normal;
                       margin: 0px 0px 3px 0px}

#column3 p            {font-size: 10px; margin: 10px 0px}

td                    {padding: 0px}

table                 {border-collapse: collapse; margin: 0px; padding: 0px}
caption               {font-size: 14px; letter-spacing: 2px; margin-bottom: 3px}

thead td              {vertical-align: bottom; text-align: center; width: 15px; font-size: 10px;
                       border-top: 1px solid black; border-left: 1px solid black;
                       border-right: 1px solid black}

.hanji td             {border: 1px solid black}

input                 {width: 150px; margin-bottom: 10px}
label                 {margin-right: 10px}
#checkCount           {text-align: right; background-color: rgb(254, 232, 130)}

table#puzzleCells     {border: 1px solid red}
table#puzzleCells td  {background-color: white}
table#puzzleCells td  {border: 1px dotted gray; width: 15px; height: 15px}
.hanjie td.firstCol   {text-align: right; width: 80px; font-size: 10px;
                       border-top: 1px solid black; border-bottom: 1px solid black;
                       border-left: 1px solid black; padding-right: 3px}
A few things.

1. where did you get
style.background.display
from???
it is
style.backgroundColor
and can be changed throughout the complete script

2. when you assign an event handler to an onclick, the handler can use the "this" keyword to get at the object the event handler was replaced on.
So the onclick=changeColor looks like this:


function changeColor() {
  this.style.backgroundColor  = (this.style.backgroundColor=="black") ?"white":"black";
}

Open in new window

I got the code from the textbook "New Perspectives JavaScript and AJAX 2nd Edition" I replaced the doe you suggested. I appreciate your help so much!
ASKER CERTIFIED SOLUTION
Avatar of Michel Plungjan
Michel Plungjan
Flag of Denmark image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
That helped alot. Thank you so much, mp
Great eye for detail. Thanks for your help! :-))

Twin