Элементы Javascript с идентификатором класса / переменной - PullRequest
1 голос
/ 03 августа 2011

Есть страница с некоторым HTML-кодом, следующим образом:

<dd id="fc-gtag-VARIABLENAMEONE" class="fc-content-panel fc-friend">

Затем далее по странице код будет повторяться, например:

<dd id="fc-gtag-VARIABLENAMETWO" class="fc-content-panel fc-friend">

Как получить доступ к этимэлементы, использующие внешний скрипт?

Я не могу правильно использовать document.getElementByID в этом случае.По сути, я хочу найти всю страницу, используя oIE (объект InternetExplorer.Application), созданный с помощью VBScript, и просмотреть каждую строку (в частности, VARIABLENAME (one / two / etc)), которая выглядит как две вышеупомянутые, в массив.1010 * Я исследовал Javascript и методом проб и ошибок нигде не получил эту конкретную страницу, в основном потому, что нет имени тега, а идентификатор тега всегда изменяется в конце.Может кто-нибудь помочь?:)

РЕДАКТИРОВАТЬ: Я пытался использовать Javascript, предоставленный в качестве ответа, чтобы получить результаты, однако, кажется, ничего не происходит при применении к моей странице.Я думаю, что тег тоже в теге, поэтому он становится сложным - вот основная часть кода с веб-страницы, которую я буду сканировать.

<dd id="fc-gtag-INDIAN701" class="fc-content-panel fc-friend">
    <div class="fc-pic">
        <img src="http://image.xboxlive.com/global/t.58570942/tile/0/20400" alt="INDIAN701"/>
    </div>
    <div class="fc-stats">
        <div class="fc-gtag">
            <a class="fc-gtag-link" href='/en-US/MyXbox/Profile?gamertag=INDIAN701'>INDIAN701</a>
            <div class="fc-gscore-icon">3690</div>
        </div>
        <div class="fc-presence-text">Last seen 9 hours ago playing Halo 3</div>
    </div>
    <div class="fc-actions">
        <div class="fc-icon-actions">
            <div class="fc-block">
                <span class="fc-buttonlabel">Block User</span>
                <a href="#" class="fc-blockbutton" onclick="return FriendCenter.BlockFriend('INDIAN701'); return false;"></a>
            </div>
        </div>
        <div class="fc-text-actions">
            <div class="fc-action">&nbsp;</div>
            <span class="fc-action">
                <a href="/en-US/MyXbox/Profile?gamertag=INDIAN701">View Profile</a>
            </span>
            <span class="separator-icon">|</span>
            <span class="fc-action">
                <a href="/en-US/GameCenter?compareTo=INDIAN701">Compare Games</a>
            </span>
            <span class="separator-icon">|</span>
            <span class="fc-action">
                <a href="/en-US/MessageCenter/Compose?gamertag=INDIAN701">Send Message</a>
            </span>
            <span class="separator-icon">|</span>
            <span class="fc-action">
                <a href="#" onclick="return FriendCenter.AddFriend('INDIAN701');">Send Friend Request</a>
            </span>
        </div>
    </div>
</dd>

Это затем ПОВТОРЯЕТСЯ с другим именем пользователя (указанное выше имя пользователяэто INDIAN701).

Я попробовал следующее, но нажатие на кнопку ничего не дало:

<script language="vbscript">
    Sub window_onLoad

      Set oIE = CreateObject("InternetExplorer.Application")
      oIE.visible = True
      oIE.navigate "http://live.xbox.com/en-US/friendcenter/RecentPlayers?Length=12"

    End Sub

</script>


<script type="text/javascript"> 
    var getem = function () {
      var nodes = oIE.document.getElementsByTagName('dd'),
      a = [];

      for (i in nodes) {
          (nodes[i].id) && (nodes[i].id.match(/fc\-gtag\-/)) && (a.push(nodes[i]));
      }
      alert(a[0].id);
      alert(a[1].id);
    }
</script> 

<body>

<input type="BUTTON" value="Try" onClick="getem()">


</body>

В основном я пытаюсь получить список имен пользователей из списка недавних игроков(Я надеялся, что мне не придется объяснять это :)).

Ответы [ 5 ]

1 голос
/ 08 августа 2011
    <body>
    <script type="text/javascript">
        window.onload = function () {
            var outputSpan = document.getElementById('outputSpan'),
                iFrame = frames['subjectIFrame'];

            iFrame.document.location.href = 'http://live.xbox.com/en-US/friendcenter/RecentPlayers?Length=1';
            (function () {
                var nodes = iFrame.document.getElementsByTagName('dd'),
                a = [];
                for (var i in nodes) if (nodes[i].id) {
                    (nodes[i].id.match(/fc\-gtag\-/)) && (a.push(nodes[i].id.split('-')[2]));
                }
                for (var j in a) if (a.hasOwnProperty(j)) {
                    outputSpan.innerHTML += (a[j] + '<br />');
                }
            })();
        };
    </script>
    <span id="outputSpan"></span>
    <iframe id="subjectIFrame" frameborder="0" height="100" width="100" />
</body>
1 голос
/ 04 августа 2011
    var getem = function () {
        var nodes = document.getElementsByTagName('dd'),
            a = [];

        for (var i in nodes) if (nodes[i].id) {
            (nodes[i].id.match(/fc\-gtag\-/)) && (a.push(nodes[i].id.split('-')[2]));
        }
        alert(a[0]);
    };

пожалуйста, попробуйте, нажав здесь!

1 голос
/ 03 августа 2011
var getem = function () {
    var nodes = document.getElementsByTagName('dd'),
        a = [];

    for (var i in nodes) if (nodes[i].id) {
        (nodes[i].id.match(/fc\-gtag\-/)) && (a.push(nodes[i]));
    }
    alert(a[0].id);
    alert(a[1].id);
};

попробуйте на jsbin

0 голосов
/ 03 августа 2011

Итак ... как-то так (jQuery)?

var els = [];

$('.fc-content-panel.fc-friend').each(function() {
  els.push(this));
});

Теперь у вас есть массив всех элементов, которые имеют оба этих класса.

0 голосов
/ 03 августа 2011

Что означает «я не могу правильно использовать document.getElementsByID в этом случае»? Вы имеете в виду тот факт, что вы делаете орфографические ошибки getElementByID?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...