尝试将按钮放入 link

Trying to put a button into a link

我有一个可点击的跨度,其中有一个按钮。我希望 span 转到一个 href,按钮转到另一个。这是我目前拥有的代码:

<script>
function deleteAlbum(url) {
    var txt;
    var r = confirm("Do you really want to delete this album?");
    if (r == true) {
        window.location.href = url;
    } 
    document.getElementById("demo").innerHTML = txt;
}
</script>    

<a href='gallery.php?album=16022015NewTest'>
    <span class='album'>
        <p>New Test</p>
        <p>16/02/2015</p>
        <button class='delete' onClick=deleteAlbum('gallery.php?delete_album=16022015NewTest')>
            Delete Album
        </button>
    </span>
</a>

有人有什么想法吗?

根据 atmd 的评论重组您的 html:不要将 button 放在 a 中。要 html 符合属性值使用引号:

<div class="album">
    <a href="gallery.php?album=16022015NewTest">
        <p>New Test</p>
        <p>16/02/2015</p>
    </a>
    <button class="delete" onClick="deleteAlbum('gallery.php?delete_album=16022015NewTest')">Delete Album</button>
</div>

因此 a 标签不包含 button 标签。在内联元素中不要有块元素也是一个好主意。 span 标签已更改为 div 标签。您也可以将 p 标签更改为 span。然后 html 看起来像这样:

<div class="album">
    <a href="gallery.php?album=16022015NewTest">
        <span>New Test</span>
        <span>16/02/2015</span>
    </a>
    <button class="delete" onClick="deleteAlbum('gallery.php?delete_album=16022015NewTest')">Delete Album</button>
</div>

您想继续阅读 event bubbling - 该答案中的 quirksmode 解释非常好。

以下是您的示例的一种可能修复方法:

<script>
function gotoAlbum(albumId) {
  window.location.href="gallery.php?album="+albumId;
}

function deleteAlbum(e, url) {
  var r = confirm("Do you really want to delete this album?");
  if (r == true) {
    window.location.href = url;
  } 
 e.stopPropagation();
}
</script>    


<span class='album' onClick="gotoAlbum('16022015NewTest');" >
  <p>New Test</p>
  <p>16/02/2015</p>
  <button class='delete' onClick="deleteAlbum(event, 'gallery.php?delete_album=16022015NewTest');">Delete Album</button>
</span>

另外:正如其他评论所提到的,锚点内的按钮很奇怪 - 它不合规 HTML5 - 参见 this question

你不知道。不要把 <button> 放在 <a>.

里面