我正在撰写一个简单的论坛,在主页上有一个帖子标题列表。我想让用户点击帖子标题并链接到 postPage.html 。在 postPage.html 上,我需要从firebase数据库中获取标题和内容。问题是我不知道用户点击了哪个帖子。
我一直在考虑使用 document.onclick 来获取用户点击的标题,这样我就可以使用标题作为路径在firebase中找到帖子内容了 firebase.database ()。ref(postTitle).set({post_title:postTitle ...})
如果有两个标题相同的帖子可能会有问题。
以下是我在主页上显示帖子标题列表的方法。
<table class="table table-hover">
<thead>
<tr>
<th>Topics</th>
<th>Posted by</th>
</tr>
</thead>
<tbody id="allposts">
<tr>
<td><a href="postPage.html">title1</a></td>
<td>person1</td>
</tr>
<tr>
<td><a href="postPage.html">title2</a></td>
<td>person2</td>
</tr>
</tbody>
</table>
,html看起来像这样
{{1}}
我想不出另一种方法可以做到这一点。任何建议和暗示都会有很大帮助。
答案 0 :(得分:1)
您应该在帖子的每个行添加帖子的密钥,并将其作为查询字符串值添加到postPage网址。我已经调整了您的原始代码如下:
var str_1 = "<tr><td>";
var str_2 = "</a></td></tr>";
postRef.once('value').then(function(snapshot){
snapshot.forEach(function(childSnapshot){
var childData = childSnapshot.val();
total_post[total_post.length] = str_1 + "<a href='postPage.html?postId=" + childSnapshot.key + "'>" + childData.post_title + str_2;
});
document.getElementById('allposts').innerHTML = total_post.join('');
}).catch(e => console.log(e.message));
然后在postPage.html页面中,您将从网址获取postId。根据您将要使用的语言,您可以使用不同的方法来获取它。
在javascript中,您可以使用此处显示的方法How can I get query string values in JavaScript?并执行getParameterByName('postId');
我将其复制以供参考:
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
答案 1 :(得分:1)
你需要添加一个&#34; unique&#34;键入每个href。
<a href="postPage.html?postId=1>Post Title</a>