1

JavaScript に問題があり、html ドキュメント内の div の最後の ID を見つける必要があります。見ればわかるのですが、JavaScriptで自動化してほしいです。

<body>
  <div id="start">
    <div id="1">Text</div>
    <div id="2">Text</div>
    <div id="3">Text</div>
    <div id="4">Text</div>
    <div id="5">Text</div>
    <div id="6">Text</div>
  </div>
</body>

JavaScript:

 function setCookie() {
    document.cookie = '1';
 }

 function startPage() {

     var cookieValueInt = parseInt(document.cookie);
     var secondPage = cookieValueInt + 1;
     document.getElementById(document.cookie).style.visibility = 'visible';
     document.getElementById(secondPage).style.visibility = 'visible';
     if (cookieValueInt == 1) {
         document.getElementById('leftarrow').style.visibility = 'hidden';
     }

 }

 function nextPage() {
     var cookieValueInt = parseInt(document.cookie);
     var secondPage = cookieValueInt + 1;
     var newCookieValue = cookieValueInt + 2;
     document.getElementById(document.cookie).style.visibility = 'hidden';
     document.getElementById(secondPage).style.visibility = 'hidden';
     document.getElementById(newCookieValue).style.visibility = 'visible';
     document.getElementById(newCookieValue + 1).style.visibility = 'visible';
     document.getElementById('leftarrow').style.visibility = 'visible';
     document.cookie = newCookieValue;


 }

 function previousPage() {
     var cookieValueInt = parseInt(document.cookie);
     var secondPage = cookieValueInt + 1;
     var newCookieValue = cookieValueInt - 2;

     document.getElementById(document.cookie).style.visibility = 'hidden';
     document.getElementById(secondPage).style.visibility = 'hidden';
     document.getElementById(newCookieValue).style.visibility = 'visible';
     document.getElementById(newCookieValue + 1).style.visibility = 'visible';
     document.cookie = newCookieValue;
     cookieValueInt = parseInt(document.cookie);
     if (cookieValueInt == 1) {
         document.getElementById('leftarrow').style.visibility = 'hidden';
     }
 }
4

4 に答える 4

1

コンテナを使用することをお勧めします:

var parentEl = document.getElementById("start");
var id = parentEl.children(parentEl.children.length-1).id;

さらに、数字を ID として使用しないでください。Kolink の回答を参照してください。編集:修正されたコード

于 2013-03-06T15:29:53.770 に答える
1

数字を ID として使用しないでください。HTML5 では技術的には有効ですが、ID の使用方法が不十分であり、偶発的な重複が発生しやすくなっています。などを使用することをお勧めし<div id="someprefix_1">ます。いつでも ID を取得し、プレフィックスを削除して番号を取得できます。

それはさておき、これはうまく機能します(IE7以下を除く):

var divsWithIDs = document.querySelectorAll("div[id]"),
    lastDiv = divsWithIDs[divsWithIDs.length-1];

編集:これをプレフィックスのアイデアと組み合わせると、「その種類の ID を持つ最後の要素」を簡単に取得できます。

var divsWithPrefixedIDs = document.querySelectorAll("div[id^='someprefix_']"),
    lastDiv = dovsWithPrefixedIDs[divsWithPrefixedIDs.length-1];
于 2013-03-06T15:24:30.300 に答える
1

jQuery を試して、次のコードを使用できます。

$(document).ready(function(){

      var attrId = $('#start').children('div:last-child').attr('id');

 });

また、終了 div タグから < がないため、HTML が有効ではないことに注意してください。

于 2013-03-06T15:30:43.613 に答える
0

getElementsByTagNameを使用して、配列から最後の1つをフェッチしますか?

https://developer.mozilla.org/en-US/docs/DOM/element.getElementsByTagName

また、私のアドバイスはjQueryを使用することです:)

于 2013-03-06T15:25:57.573 に答える