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

不要使用数字作为 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

我建议使用容器:

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

此外,您不应使用数字作为 ID,请参阅 Kolink 的答案。编辑:更正的代码

于 2013-03-06T15:29:53.770 回答
1

您可以尝试使用 jQuery 并使用以下代码:

$(document).ready(function(){

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

 });

另外,请注意您的 HTML 无效,因为您在结束 div 标记中缺少 < 。

于 2013-03-06T15:30:43.613 回答
0

使用 getElementsByTagName 并从数组中获取最后一个?

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

另外,我的建议是使用 jQuery :)

于 2013-03-06T15:25:57.573 回答