【发布时间】:2019-10-24 08:09:16
【问题描述】:
我正在尝试创建一个论坛,用户可以通过填写带有名称和消息的表单来创建线程,人们可以通过单击 cmets 按钮(更多)来评论每个线程帖子,该按钮会打开线程帖子下方的所有 cmets,然后提交评论表单。
目前我正在使用一个表格来显示所有线程帖子和 cmets,问题是当我单击更多 cmets 按钮时,它会在新表格列的一侧打开 cmets,但我希望它在线程帖子下方打开。我尝试将 cmets 放在下面的新表格行中,但这不起作用。因此,所有 cmets 都需要显示在主题帖子下方,并且所有 cmets 下方将是一个表单,用户可以填写该表单以提交评论。
这是现在的样子:https://imgur.com/AAcPezQ
function comment() {
var table = document.getElementById("comments");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var name = document.getElementById("name").value;
var message = document.getElementById("message").value;
cell1.innerHTML = name;
cell2.innerHTML = message;
}
function add() {
var table = document.getElementById("masterTable");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var name = document.getElementById("name").value;
var message = document.getElementById("message").value;
cell1.innerHTML = name;
cell2.innerHTML = message;
}
function toggle_visibility(id) {
var btn = document.getElementById('commentBtn');
var e = document.getElementById(id);
if (e.style.display == 'block') {
e.style.display = 'none';
btn.innerHTML = "More";
} else {
e.style.display = 'block';
document.getElementById("commentBtn").value = "Less";
btn.innerHTML = "Less";
}
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<h1>Test</h1>
<table id="masterTable">
<tr>
<th>Name</th>
<th>Message</th>
<th>Comments</th>
</tr>
<tr>
<td>Tiago</td>
<td>Hello how are you?</td>
<td><button id="commentBtn" onclick="toggle_visibility('comments');">More</button></td>
<td id="comments" style="display: none;">
<p>TestComment1</p>
<p>TestComment2</p>
<form>
<h4>Submit a comment</h4>
<input type="text" id="name" placeholder="name">
<input type="text" id="message" placeholder="message">
<button type="submit" onClick='comment()' id='button'>Submit</button>
</form>
</td>
</tr>
<tr>
<td>Comment Name should display here</td>
<td>Comment message should display here</td>
<td></td>
</tr>
</table>
</div>
<br/><br/>
<form>
<h2>Submit a message</h2>
<input type="text" id="name" placeholder="name">
<input type="text" id="message" placeholder="message">
<button type="submit" onClick='add()' id='button'>Submit</button>
</form>
所以我需要的结果是,如果用户点击更多按钮,那么所有 cmets 将显示在帖子下方而不是帖子右侧。
【问题讨论】:
-
我建议不要为此使用表。对于这种情况,您不会使用表格。
-
您在两个表单的输入中使用相同的 id,这可能是从错误的输入中返回空字符串值的问题(第一次看到,第一次捕获)
-
你从来没有
event.preventDefault().onsubmit的表格。
标签: javascript html css