我读过的所有内容都说使用了元素 .onclick属性,但这似乎并不适用于我的情况。我正在尝试解析数字:629216818并将其设置为varialbe:fbid。这是一个Greasemonkey脚本,因此无法直接编辑HTML。我不是专业人士,所以我可能只是在做一些愚蠢的事,但这是我的HTML和Javascript:
<div id="petRightContainer">
<a title = "Pet trainer bonus: Your companion will level 5% faster." href="setup.php?type=companion>Random=8167343321487308">
<div class="petRight" style="background-image:url(/fb/res/gui4/companion/cu_sith.jpg)"></div>
</a>
<div class="petRightLevel">
<a href="#" onClick="publishToWall('http://www.ghost-trappers.com/fb', 'Look at the cool augmentations my companion has received on Ghost Trappers.', 'Look at my new companion on Ghost Trappers! I\'ve named it Jankie. ', null, 'index.php?si=629216818&fromWall=1', 'white/companion_32.jpg', 'companion/wallpost_augmentation_12.jpg', 'companion/wallpost_augmentation_21.jpg', 'companion/wallpost_augmentation_11.jpg', null)">Dog</a>
</div>
等
<script type="text/javascript">
fbid = 0;
fbidRegex = /\d{3,}(?=&fromWall=1)/;
if ( document.getElementsByClassName("petRightLevel")[0]){
element = document.getElementsByClassName("petRightLevel")[0].firstChild;
codeStore = element.onclick;
fbid = fbidRegex.exec(codeStore);
document.write("it is working ");
}
document.write(fbid);
</script>
答案 0 :(得分:0)
我认为这可能适合你。
<script type="text/javascript">
fbid = 0;
fbidRegex = /\d{3,}(?=&fromWall=1)/;
if(document.getElementsByClassName("petRightLevel")[0]){
element = document.getElementsByClassName("petRightLevel")[0].firstChild;
// callback function to execute when the element onclick event occurs.
codeStore = element.onclick = function(){
fbid = fbidRegex.exec(codeStore);
document.write("it is working ");
document.write(fbid);
}
}
</script>
答案 1 :(得分:0)
问题出在这一行:
element = document.getElementsByClassName("petRightLevel")[0].firstChild;
如果您使用支持document.getElementsByClassName
的HTML和其他浏览器,并且在HTML中,<div class="petRightLevel">
和
<a href="#" onClick= ...>
,firstChild实际上是一个文本节点而不是链接。您需要做的就是删除两个元素之间的空格和/或换行符。
如果您使用的是IE,问题仍然存在于javascript的同一行,因为IE在版本8之前不支持document.getElementsByClassName。
更新:以下javascript代码适用于我测试的所有浏览器,而不涉及HTML:
<script type="text/javascript">
fbid = 0;
fbidRegex = /\d{3,}(?=&fromWall=1)/;
var divs = document.getElementsByTagName("div");
var link = null;
for (var i=0;i<divs.length;i++)
{
if(divs[i].getAttribute("class") ==="petRightLevel")
{
link = divs[i].getElementsByTagName("a")[0];
break;
}
}
if (link){
codeStore = link.onclick;
fbid = fbidRegex.exec(codeStore);
document.write("it is working ");
}
document.write(fbid);
</script>
如果您只需要获得锚点,那将比这简单得多。