第一次发帖,PHP不是我最强的领域,所以这里......
我的代码生成一个按钮列表,具体取决于在我的数据库表中找到多少个值,然后在单击按钮时应该触发第二段代码。一切正常,但第二段代码仅适用于生成的最后一个按钮。有什么想法吗?
<?php
$username = $_SESSION['sess_user'];
$con=mysql_connect('localhost','root','root') or die(mysql_error());
mysql_select_db('user_registration') or die("cannot select DB");
$loop = mysql_query("SELECT * FROM `vaults` WHERE username = '$username' ORDER BY vaultname asc") or die ('Error Getting User Data! <br />' .mysql_error());
$chk = mysql_num_rows($loop);
$myvalue = '';
while ($row = mysql_fetch_assoc($loop)) {
$myvalue = "{$row['vaultname']}";
echo '<form method="post"><input class="text-center" type="submit" name=' . $myvalue . ' value=' . $myvalue . ' id="vaultSelecter"></form>';
}
?>
<?php
if(isset($_POST[$myvalue])){
echo '<script type="text/javascript">window.onload = function() { document.getElementById("instructions").innerHTML = " HELLO WORLD! "; }</script>';}
?>
谢谢大家的回复,我很感激。我理解每个人都在说什么,但我在getELementByID()中引用的ID是按钮的单独DIV,我想用ID&#34;指令更改单个DIV的内容&#34;,当任何一个单击按钮,但它仅适用于循环创建的最后一个按钮。这仍然是由于我按下ID按钮的方式吗?
例如说上面的循环创建了三个按钮,我希望每个按钮用&#34; Hello Word&#34;来改变以下DIV的内容。
<div id=instructions>
replace this text
</div>
我猜我必须将循环创建的每个$ myvalue存储到一个数组中,这样每个值都可以分别分配给每个按钮,我只是不知道该怎么做。
答案 0 :(得分:1)
您正在重复此行中的ID:
echo '<form method="post"><input class="text-center" type="submit" name=' . $myvalue . ' value=' . $myvalue . ' id="vaultSelecter"></form>';
和ID必须是唯一的。尝试上课。例如:
var elems = document.getElementsByClassName("text-center");
for (var i = 0; i < elems.length; i++) {
console.log('x')
elems[i].addEventListener('click', function () {
alert('hello');
}, false);
}
答案 1 :(得分:0)
您正在为同一id
分配多个输入,并将其分配给class
,因为id
必须是唯一的。
你还为每个按钮制作了一个表单,这对我来说似乎毫无意义,请尝试这样做:
echo '<form method="post">';
while ($row = mysql_fetch_assoc($loop)) {
$myvalue = "{$row['vaultname']}";
echo '<input class="text-center vaultSelecter" type="submit" name=' . $myvalue . ' value=' . $myvalue . '>';
}
echo '</form>';
名为vaultSelector的id现在是一个类,因此可以通过getElementByClassName()访问
答案 2 :(得分:0)
而不是:
name=' . $myvalue . ' value=' . $myvalue . ' id="vaultSelecter"
也许试试
name="' . $myvalue . '" value=' . $myvalue . ' id="' . $myvalue . '"
在我看来,最好唯一地标识将用作编程元素的任何元素。
只是另一个未提出异议的意见。如果你可以将所有东西都放在一个表格中,那么它可能会让事因此,当按钮提交时,设置一个隐藏字段并继续表单提交。