2013-07-24 21 views
-2

Как получить значение текста между >testhere</a> в теге href с помощью javascript?получить значение тега href через javascript

<a style="color:#39485;" href="/index.html">Hello, 112</a> 

112 и /index.html всегда будет отличаться, единственное, что будет то же самое Привет, поэтому иметь в виду, что, как я могу получить значение, которое в данном случае является 112? Я не хочу, чтобы часть Hello, только 112. Количество цифр может меняться, это не обязательно 3 цифры, такие как этот. Линия выше, что является:

<div id="nna"> 

и ниже один:

</span> 

Другой является:

<a href="/index/page?number=33" class="page_number"> 

/Индекс/номер страницы = всегда будет таким же, , а также значение класса. Линия выше, что всегда:

<div id="mla"> 

линия ниже, всегда:

<div class="friend_block_avatar"> 

Надеется, что сделает его более легким. Я хочу получить номер, который всегда будет отличаться, который в этом случае равен 33. Я буду запускать javascript в своем браузере, который является хром через строку URL-адреса, например: javascript: javascriptcodegoeshere. Поэтому я не могу использовать jquery. Количество цифр для этого может также меняться, это не обязательно 2 цифры. Оба они будут в исходном коде на той же странице.

+0

У вас есть контроль над HTML на всех? –

+0

Нет, у меня нет контроля над html. – bob

+0

Как это связано с атрибутами стиля и href? Вы просто пытаетесь получить частичный текстовый контент от якорей? – David

ответ

0

Первый сценарий:

Найти все якоря, а затем, если текст начинается с 'Hello,' извлечь его:

var anchors = document.getElementsByTagName('a'), 
    values = [], 
    str = /Hello, /, 
    i; 

for (i = 0; i < anchors.length; i += 1) { 
    if (str.test(anchors[i].text)) { 
     values.push(anchors[i].text.replace(str, '')); 
    } 
} 

console.log(values); // an array containing all the values 

Demo1

Второй сценарий:

Найдите все якоря, чей href начинается с «href =»/index/page? Number = 'и извлекает значение:

var anchors = document.querySelectorAll('a[href^="/index/page?number="]'), 
    values = [], 
    i; 

for (i = 0; i < anchors.length; i += 1) { 
    values.push((anchors[i].pathname + anchors[i].search).replace('/index/page?number=', '')); 
} 

console.log(values); // an array containing all the values 

Demo2

+0

Как я могу оповестить массив? – bob

+0

@bob, вы можете заменить 'console.log' на' alert', если хотите, но лучше использовать 'console.log'. –

+0

Это не работает, он просто замораживает мой браузер. – bob

-2

Я не уверен, что правильно понял ваш вопрос - вы хотите сократить число из другого контента? Вы можете сделать это с String.Split: когда у вас есть строка с точкой останова, например

а = «Hello, 112»

Вы могли бы сделать что-то вроде этого:

a.split (» ") возвращает массив:

{" Привет, "" 112" }

Я надеюсь, что я понял, что это право ^^

+0

Прочтите мой вопрос и комментарии еще раз, это не имеет к этому никакого отношения. – bob

+0

Подождите - почему вниз и так недружелюбно? Джетер ответил на одно и то же. – GFP

0

Найти все якорей первых:

var anchors = document.links; 

Затем разобрать их и разделить на то, что делает их уникальными: Hello,:

if(anchors.length > 0) { 
    for(var i in anchors) { 
     var str = anchors[i].innerText; 

     if(undefined !== str) { 
      var parts = str.split('Hello, '); 

      if(parts.length > 0 && parts[0] === '') { 
       console.log(parts[1]); 
      } 
     } 
    } 
} 

С помощью этих данных образца:

<a style="color:#39485;" href="/index.html">Hello, 112</a> 
<a style="color:#39485;" href="/index1.html">Hello, 113</a> 
<a style="color:#39485;" href="/index2.html">Hello, 114</a> 
<a style="color:#39485;" href="/index3.html">113</a> 
<a href="/index/page?number=33" class="page_number">Hello, 123</a> 

... консоль покажет 112, 113, 114 и 123.

Fiddle here

+0

Извините, я просто хочу быстрый скрипт, который может анализировать оба этих значения непосредственно в переменной. Спасибо, что пытались помочь. – bob

+0

Я добавил более подробную информацию, теперь это должно быть проще. – bob

0

Предположение: вы хотите любое количество цифр в href и HTML всех якорных тегов на странице.

Вы можете выполнить следующее из OmniBar в chrome (вы знаете, что вы можете использовать встроенную консоль Chrome для правильной работы javascript на текущей странице?).

javascript: var anchors = document.querySelectorAll('a'); anchors.forEach = [].forEach; function grabDigits (string) { var match = string.match(/\d+/); if (match && match[0]) { return match; } } anchors.forEach(function(anchor){ console.log('text: ' + grabDigits(anchor.innerHTML)); console.log('href: ' + grabDigits(anchor.href)); }); /* run with: javascript: var anchors = document.querySelectorAll('a'); anchors.forEach = [].forEach; anchors.forEach(function(anchor){ match = anchor.innerHTML.match(/\d+/); if (match && match[0]) { console.log(match[0]); } }); */ 

Chrome может лишить первоначальную javascript: немного, поэтому вам может понадобиться ввести вручную, что в omnnibar, а затем скопировать и вставить остальную часть сценария.

Я авторотирующий Лил немного здесь, но это, кажется, работает ^^:

JS

var anchors = document.querySelectorAll('a'); 

anchors.forEach = [].forEach; 


function grabDigits (string) { 
    var match = string.match(/\d+/); 
    if (match && match[0]) { 
    return match; 
    } 
} 

anchors.forEach(function(anchor){ 
    console.log('text: ' + grabDigits(anchor.innerHTML)); 
    console.log('href: ' + grabDigits(anchor.href)); 

}); 

jsbin

+0

Не все якорные метки, только те. Вы ближе всего к этому. – bob

+0

Я добавил более подробную информацию, теперь это должно быть проще. – bob

0

Поскольку ваши href и innerHTML префиксов будет всегда то же самое, и вы просто ищете число, следующее, вы можете выполнить это с помощью простого регулярного выражения. Пример:

HTML:

<a style="color:#39485;" href="/index.html">Hello, 112</a> 
<a href="/index/page?number=33" class="page_number">some link</a> 
<a href="index.html">Should not be included</a> 

JS:

var regex = /.*number=(\d+)|Hello,\s(\d+)/ 
var links = document.getElementsByTagName("a"); 
var innerHtmlNumbers = []; 
var hrefNumbers = []; 
for (var index = 0; index < links.length; index++) { 
    var link = links[index]; 
    var match = regex.exec(link.getAttribute("href")); // Check the href first 
    if (match) { 
    // Found an href like "/index/page?number=12381239" 
    var hrefNumber = match[1]; 
    hrefNumbers.push(hrefNumber); 
    } else { 
    // Check innerHTML for something like "Hello, 123813912" 
    match = regex.exec(link.innerHTML); 
    if (match) { 
     var innerHtmlNumber = match[2]; 
     innerHtmlNumbers.push(innerHtmlNumber); 
    } 
    } 
} 
console.log(hrefNumbers); 
console.log(innerHtmlNumbers): 

Возьмите look at this jsfiddle, чтобы увидеть рабочий пример. С этим вы можете просто запустить все свои теги <a> сразу.

+0

Я добавил более подробную информацию, теперь это должно быть проще. – bob

Смежные вопросы