Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按标记名获取元素[此]?_Javascript_Jquery_This_Getelementsbytagname - Fatal编程技术网

Javascript 按标记名获取元素[此]?

Javascript 按标记名获取元素[此]?,javascript,jquery,this,getelementsbytagname,Javascript,Jquery,This,Getelementsbytagname,首先是一个简短的背景。所以我开始练习使用API。对于我现在正在使用的那个,我正在加载一个DIV,其中有很多链接,我必须给出一个新的用途。我设法阻止了默认的onclick函数。现在我需要保存单击的链接“innerHTML”属性 var nextPage = document.getElementsByTagName("a")[this].innerHTML; 有了这个,我试图锁定点击的链接,但没有成功。希望你明白我想做什么。如果是这样,我有没有办法解决这个问题 谢谢 编辑: this.inner

首先是一个简短的背景。所以我开始练习使用API。对于我现在正在使用的那个,我正在加载一个DIV,其中有很多链接,我必须给出一个新的用途。我设法阻止了默认的onclick函数。现在我需要保存单击的链接“innerHTML”属性

var nextPage = document.getElementsByTagName("a")[this].innerHTML;
有了这个,我试图锁定点击的链接,但没有成功。希望你明白我想做什么。如果是这样,我有没有办法解决这个问题

谢谢

编辑:


this.innerHTML
可以完成这项工作,如果我没有弄错的话

如果要在其中获取整个html,可以将onclick事件绑定到锚点本身,如果可能的话,还可以处理该事件

<a onclick="clicked(this)">Click me</a>
function clicked(element) {
    // Do whatever needed
    // element.innerHTML will change it's innerHTML
}
使用jQuery进行以下操作:

$('a').on('click', function(){
  // this will run with every click, and 'this' will be your clicked item
  console.log(this.innerHTML);

  // although you probably want:
  console.log($(this).attr('href'));
});

使用jQuery可以使代码更加清晰,并统一直接使用DOM api处理时可能遇到的跨浏览器兼容性问题。

首先是
文档.getElementsByTagName(“a”)[this].innerHTML
将返回
未定义的
,因为它将返回html节点的集合,并且它必须通过索引而不是

由于您已经单击了,因此可以尝试以下代码:

function yourClickFunction(event) {
  var target = event.target || event.srcElement;
  var nextPage = target.innerHTML;
}

您可以使用一个公共类(
link
,在下面的示例中)附加click事件,然后只需使用
this.innerHTML
返回您单击的链接的文本

希望这有帮助

var classname=document.getElementsByClassName(“链接”);
var clickFunction=function(){
//防止违约
if(event.preventDefault)event.preventDefault();
event.returnValue=false;
//获取文本
log(this.innerHTML);
}

对于(var i=0;i您可以向所有
a
标记元素添加
onclick
侦听器

var links=document.getElementsByTagName('a');
对于(var i=0,il=links.length;i
链接a

链接b
文档。getElementsByTagName(“a”)
为您提供一个HtmlanchoreElement数组。该数组的索引是从0到n的整数值

这个
在您的上下文中,我认为它是
windows
对象(您的代码示例有点短,所以我不得不猜测一下)

使用
window
作为期望整数的数组的索引当然不会给您带来任何结果。或者确切地说,使用
undefined

有两种可能的方法来实现您的目标:

onclick处理器
函数hello(elem){
log(“您单击了“+elem.innerHTML+”))
}

您很接近,需要在
[index]
中通过一个数字作为
索引
测试
0
是的,我知道。例如,如果我写[0]我将以第一个链接为目标。但是有多个链接具有不同的innerHTML属性,我只想保存单击的链接的innerHTML。是的,我同意@ZakariaAcharki。您是否尝试过
这个。innerHTML
?向我们展示单击侦听器,以便我们知道这个
是什么,并可以帮助您further@SuryaPurohit会给我e整个html页面。我不知道我是否可以这样做,因为html页面是由API加载的。是的,我在加载API时使用了jquery,我也尝试过解决jquery的问题,但没有解决。我尝试了secound console.log。但这给了我未定义的。您是否以与我的回答相同的方式绑定了“click”事件?为什么要使用循环绑定cl单击锚定???如果可以使用jquery,则不应使用循环。@SuryaPurohit这是真的。我刚刚找到了完整的JS答案。不需要粗鲁这也行!但我很难理解这行“var target=event.target | | event.srcelment;var nextPage=target.innerHTML;”.您介意解释一下吗?这意味着,获取触发事件的元素并将其存储在目标变量中
$('a').on('click', function(){
  // this will run with every click, and 'this' will be your clicked item
  console.log(this.innerHTML);

  // although you probably want:
  console.log($(this).attr('href'));
});
function yourClickFunction(event) {
  var target = event.target || event.srcElement;
  var nextPage = target.innerHTML;
}