2017-04-23 12 views
0

나는이 과제를 수행해 왔으며 지금까지 코드를 작동시키지 못했습니다. 나는 이미 존재하는 HTML 파일에서이 div의에 액세스 할 수 있습니다15 개의 퍼즐 게임을 위해 Javascript에서 HTML div에 액세스하는 방법은 무엇입니까?

<div id="puzzlearea"> 
      <!-- the following are the actual fifteen puzzle pieces --> 
      <div>1</div> <div>2</div> <div>3</div> <div>4</div> 
      <div>5</div> <div>6</div> <div>7</div> <div>8</div> 
      <div>9</div> <div>10</div> <div>11</div> <div>12</div> 
      <div>13</div> <div>14</div> <div>15</div> 
     </div> 

그리고 이것은 지금까지 나는 또한 얻을 수 없었다 나의 현재 코드의 반복 작업입니다 :

"use strict"; 

var ROWS = 4; 
var emptyRow = 3; 
var emptyCol = 3; 
var SQSIZE = 100; 

function pageLoad() { 
    createPuzzle(); 
    document.getElementById("shufflebutton").onclick = shufflePuzzle; 
} 

window.onLoad = pageLoad; 

function createPuzzle() { 
    for (var i = 1; i < 16; i++) { 
     var square = $$("puzzlearea div")[i]; 
     var row = Math.floor(i/ROWS); 
     var col = Math.floor(i - row/ROWS); 
     square.id = "square_" + row + "_" + col; 
     square.className = "puzzlepiece"; 
     square.style.top = (col * SQSIZE) + "px"; 
     square.style.left = (row * SQSIZE) + "px"; 
     square.style.backgroundPosition = (-col * SQSIZE) + "px" + (-row * SQSIZE) + "px"; 
    } 
} 

어떤 도움이 될 것이다 정확하게 표시 할 퍼즐 조각을 얻는 데 감사드립니다. 할당 지시서에서는 2D 배열을 사용하지 말 것을 권장 했으므로이 요구 사항을 충족시키기 위해 필자는이 점을 명확히 이끌어 냈습니다. 맨 위에있는 변수 선언은 할당 지침을 기반으로합니다.

또한 기존 HTML 문서를 변경하지 않아도됩니다. 내가 당신을 위해 당신의 숙제를하려고하지만, 당신이 올바른 방향으로 찔러하려는 경우 아니에요

+0

왜 CSS를 사용하지 않는? 또한,'$$'? – jrook

+0

나는 CSS 파일이 함께,하지만 나는 그것이 베카 포함하지 않았다 그게 문제가있는 곳이 아닌 곳에서 사용하세요. 또한 $$이 document.getElementById()와 같이 사용되는 것으로 생각했습니다. – Minreaux

+0

아니요,'$'는 자바 스크립트의 일반적인 변수 이름입니다 (코드에서'ROWS'처럼). jquery 라이브러리를 사용하면'$'가 jQuery 함수에 할당됩니다. jQuery를 사용할 계획이 없다면'document.getElementById'를 사용하여'puzzlearea' 요소를 선택할 수 있습니다. – jrook

답변

1

만약 내가 제대로 이해하고

var seconddiv = jQuery('#puzzlearea div:nth-child(2)'); 

또는 자바 스크립트, 문제는 N에서 div 요소의 무리 (= 4) 열을 배열하는 방법이다.

"use strict"; 
 

 
var COLS = 4; 
 
var emptyRow = 3; 
 
var emptyCol = 3; 
 
var SQSIZE = 100; 
 

 
function pageLoad() { 
 
    createPuzzle(); 
 
    //document.getElementById("shufflebutton").onclick = shufflePuzzle; 
 
} 
 

 
window.onload = pageLoad; 
 

 
function createPuzzle() { 
 
    var puzArea = document.getElementById("puzzlearea"); 
 
    puzArea.style.position = "relative"; 
 
    var numSquares = puzArea.children.length; 
 

 

 
    for (var i = 0; i < numSquares; i++) { 
 
    var child = puzArea.children[i]; 
 
    child.style.position = "absolute"; 
 
    child.style.left = (SQSIZE * (i % COLS)) + "px"; 
 
    child.style.top = SQSIZE * Math.floor((i/COLS)) + "px"; 
 
    } 
 
}
<div id="puzzlearea"> 
 
    <!-- the following are the actual fifteen puzzle pieces --> 
 
    <div>1</div> 
 
    <div>2</div> 
 
    <div>3</div> 
 
    <div>4</div> 
 
    <div>5</div> 
 
    <div>6</div> 
 
    <div>7</div> 
 
    <div>8</div> 
 
    <div>9</div> 
 
    <div>10</div> 
 
    <div>11</div> 
 
    <div>12</div> 
 
    <div>13</div> 
 
    <div>14</div> 
 
    <div>15</div> 
 
</div>
나는 그것을 테스트하지 않았지만

,이 DIV 요소의 수와 함께 작동합니다.

참고 :

  • 내가 기술이 here 설명 사용하고, 쉽게 div의 위치를하지 window.onLoad
  • window.onload입니다. CSS 만 사용하면 같은 결과를 얻을 수 있습니다. 사실 모든 자바 스크립트 코드는 CSS 속성을 설정합니다.
  • 이 경우 puzzleArea에 포함 된 사업부의 모든 자식 요소 (내가
+1

도움을 주셔서 대단히 감사합니다! 이것은 효과가있다! 나는 여전히해야 할 일이 많지만, 이것은 모든 것을 넘어 나를 도왔습니다. 또한 어떻게했는지에 대한 링크를 포함 해 주셔서 감사합니다. – Minreaux

0

...

당신은 당신이 대략 여기 MDN에서 읽을 수 childNodes에,에 보일 것입니다.

또 다른 좋은 아이디어는 innerHTML 또는 심지어 innerText입니다.

과제에 대한 행운을 빕니다! 내가 무엇에 완전히 명확하지 않다

+0

나는 누구에게도 기대하지 않았다. 나는 어디로 가야 하는지를 아는 데 도움이 필요하다. 고마워! – Minreaux

+0

당신은 매우 환영합니다, 나는 그것이 당신의 길을 따라 당신을 돕기를 바랍니다 !!! –

1

..

수단 "나는 이미 존재하는 HTML에서 이러한 div에 액세스 할 수 있습니다."

당신은 무엇을 시도 했습니까?

데이터 속성을 추가하고이를 참조 할 수 있습니다. jQuery nth-of-type과 같은 라이브러리를 사용하여 대상을 지정할 수 있습니다. 예.

var myPuzzle = document.getElementById('puzzlearea'); 
var myPuzzleItems = myPuzzle.getElementsByTagName('div'); 

for (i = 0; i < myPuzzleItems.length; ++i) { 
    // logic for doing something with the elements 
} 
1

가 여기에 CSS는 대답이다 children 배열 (documentation)를 사용해 효율적으로 활용하려면 다음

<div id="puzzlearea"> 
    <!-- the following are the actual fifteen puzzle pieces --> 
    <div>1</div> 
    <div>2</div> 
    <div>3</div> 
    <div>4</div> 
    <div>5</div> 
    <div>6</div> 
    <div>7</div> 
    <div>8</div> 
    <div>9</div> 
    <div>10</div> 
    <div>11</div> 
    <div>12</div> 
    <div>13</div> 
    <div>14</div> 
    <div>15</div> 
</div> 

CSS 사용 인 flexbox합니다.

#puzzlearea { 
    display: flex; 
    justify-content: flext-start; 
    flex-grow: 1; 
    flex-direction: row; 
    flex-wrap: wrap; 
} 
#puzzlearea > div { 
    min-width:25%; 
}