关于javascript:this.id无法检测到href中单击了哪个链接

this.id is not working to detect which link is clicked in href

我是javascript新手,正在使用google API创建书店。 我有一个小问题,无法解决。 在我从google api bookstore函数的示例代码中看到的以下代码中,我试图为该书的标题创建href并将其selfLink传递给目标页面,即book-description.html。

当我在onclick上放置alert(this.id)时,它可以工作,但是对于普通方法get(this),则不起作用。 我不需要警报框,我想获取在href中单击的链接的ID并将其传递给另一个html。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
handleResponse(response) {
  for (var i = 0; i < response.items.length; i++) {
    var item = response.items[i];
    var a = item.volumeInfo.title;
    var selfL = item.selfLink;
    //var b = a.link("book-description.html");
    var image = item.volumeInfo.imageLinks.smallThumbnail;
    document.getElementById("content").innerHTML +="</br>" +"</br>" +"" +"<img src =" +"'" + image +"'" +" class='im'/>";
    document.getElementById("content").innerHTML +="<h4 class='right'>" +"<a href = 'book-description.html'id =" +"'" + selfL +"'" +
     "onclick ='get(this);'>" + a +"</h4>";

    function get(e) {
      var link = e.id;
      localStorage.setItem("Link", link);
    }
    document.getElementById("content").innerHTML +="<h4 class='right'>" +"AUTHOR:" + item.volumeInfo.authors +"</h4>";
    document.getElementById("content").innerHTML +="<h5 class='right'>" +"PUBLISHER:" + item.volumeInfo.publisher +"</h5>";
    var rating = item.volumeInfo.averageRating;
    if (rating) {
      document.getElementById("content").innerHTML +="<h5 class='right' id='rating'>" + rating +"</h5>";
    } else {
      document.getElementById("content").innerHTML +="<h5 class = 'right' id ='rating'>Not Rated Yet</h5>";
    }
    //document.getElementById("content").innerHTML +="" +"" +""  + item.volumeInfo.publisheddate;

  }
}


您的代码有很多问题,但特别是在回答问题时; 您的函数get具有作用域,因此仅在函数handleResponse中可用。 若要从onclick进行访问,它必须在页面范围内。

只需移动此

1
2
3
4
function get(e) {
  var link = e.id;
  localStorage.setItem("Link", link);
}

进入页面顶部

在编程中有DRY的概念(请不要重复自己)。 因此,存储对document.getElementById("content")的引用并重用该变量。

1
2
var content = document.getElementById("content");
content.innerHTML = ...

您在输出html中缺少一些空格。 这可能在某些浏览器中有效,而其他浏览器会很费劲

1
<a href = 'book-description.html'id=

一个属性的结尾与另一个属性的开头之间应该有一个空格

1
<a href='book-description.html' id=

为了天上的缘故,理清字符串的串联。 如果只是一个简单的字符串,则不需要+

1
document.getElementById("content").innerHTML +="</br>" +"</br>";

应该

1
document.getElementById("content").innerHTML +="</br></br>";