我需要使用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。
答案 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”的人来说,这个功能看起来很熟悉:)。