如何使用javascript获取href标记中>testhere</a>
之间文本的值?
<a style="color:#39485;" href="/index.html">Hello, 112</a>
112和/index.html将始终不同,唯一相同的是Hello,所以记住如何获得在这种情况下为112的值?我不想要Hello,部分,只有112.数字的位数可能会有所不同,它不一定是3位数,例如这一位。 上面的一行是:
<div id="nna">
以下是:
</span>
另一个是:
<a href="/index/page?number=33" class="page_number">
/ index / page?number =将始终相同,类值也是如此。 上面的一行始终是:
<div id="mla">
下面的行总是:
<div class="friend_block_avatar">
希望这会让事情变得更容易。 我想获得总是不同的数字,在这种情况下是33。 我将在我的浏览器中运行javascript,这是通过url栏的chrome,如下所示:javascript:javascriptcodegoeshere。所以我不能使用jquery。这个数字的位数也可能不同,它不一定是2位数。 这两个都将在同一页面的源代码中。
答案 0 :(得分: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 强>
答案 1 :(得分:0)
假设:您希望页面上所有锚标记的href
和html中包含任意数量的数字。
您可以使用chrome中的OmniBar执行以下操作(您知道可以使用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));
});
答案 2 :(得分: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>
标记。
答案 3 :(得分: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
查找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
答案 4 :(得分:-2)
我不确定我理解你的问题是正确的 - 你想减少其他内容的数量吗?您可以使用string.split执行此操作:如果您有一个带断点的字符串,例如
a =“你好,112”
你可以这样做:
a.split(“,”)将返回一个数组:
{ “你好”, “112”}
我希望我理解正确^^