在页面的源代码中查找文本并创建超链接

时间:2015-09-25 13:28:44

标签: javascript html search

我需要使用JavaScript来搜索当前页面的源代码以查找字符串,例如data-userId="2008",然后提取ID号(在本例中为2008)并创建包含它的超链接,例如: http://www.google.com?2008

我一直在尝试使用indexOf和document.documentElement.innerHTML方法,但没有到达任何地方。我在this post的帮助下离得更近了,但还没有成功。

这是我到目前为止所拥有的:

    <script type="text/javascript">
function getVals() {
    code = document.getElementsByTagName("html")[0].innerHTML;
    results = code.match(/data-userId=(\d*)&/g);
    for (i=0;i<results.length;i++) {
        value = results[i].match(/data-userId=(\d*)&/);
    }
}
onload = getVals;
document.write(code);
    </script>

由于我们网络的限制,解决方案需要是JavaScript。

1 个答案:

答案 0 :(得分:0)

使用Element对象http://www.w3schools.com/jsref/met_element_getattribute.asp的getAttribute()方法。

我不确定为什么要查询html元素然后查看innerHTML。你不知道哪些标签/选择器将包含你正在寻找的数据属性?如果你不知道你正在寻找哪些选择器,你可以使用这样的递归函数来遍历DOM并将值存储在你选择的数据结构中 - 我将在这个例子中使用一个对象数组(不是确定你需要格式化这些数据。)

此外,我不确定您是如何选择访问这些页面的,但是如果找到了您要查找的属性,则可以轻松修改以下代码以创建超链接。

var storeElements = [];

function walkTheDOM(node){
    if(node.getAttribute('data-userId') !== null){
        storeElements.push({"element": node, "attrValue": node.getAttribute('data-userId'});
    }

    node = node.firstChild;
    while(node){
        walkTheDOM(node);
        node = node.nextSibling;
    }
}

然后你可以这样调用这个函数:

walkTheDOM(document.querySelectorAll('html')[0]);

如果这不是你想要的,请告诉我,我可以改变我的答案。对于那些读过Douglas Crockford的“Javascript:The Good Parts”的人来说,这个功能看起来很熟悉:)。