【发布时间】:2014-09-05 21:19:14
【问题描述】:
我正在做一个项目,我在 mysql 数据库中存储了具有“部门 ID”和“部门名称”的部门;
我想要的是让我使用 php 来做一个“while”循环并遍历所有的部门;
然后为每个部门创建一个按钮,该按钮将触发一个 javascript 函数……
我已经对此进行了很多测试,所以我知道某些部分正在工作……;这是我的代码:
<p id="id57512">How are you?</p>
<script>
var g_myobj = {};
</script>
<?php
$result_g1 = mysql_query("SELECT * FROM divisions");
while($row = mysql_fetch_array($result_g1, MYSQL_BOTH))
{
$div_id=$row[div_id];
$div_name=$row[div_name];
$button_id="b";
$button_id.=$div_id;
$function_id="f";
$function_id.=$div_id;
?>
<button id=<?php echo $button_id; ?>><?php echo $div_name; ?></button>
<script>
var f_id='<?php echo $function_id; ?>';
var b_id='<?php echo $button_id; ?>';
var div_id='<?php echo $div_id; ?>';
var newFieldName = f_id;
var newFieldValue = function() {document.getElementById("id57512").firstChild.nodeValue=gman_code1(div_id);};
g_myobj[newFieldName] = newFieldValue;
var gman_code1 = function(number) {
var result1 = number*2;
console.log(result1);
return result1;//add return statement
}
//define the behavior
document.getElementById(b_id).addEventListener("click", g_myobj[f_id] , false);
</script>
<?php
}
函数名必须是变量;但我想出了如何通过使其成为对象来做到这一点;因此可以通过这种方式访问不同的功能……
我基本上在没有循环的时候测试了这一切;我手动让它做所有事情两次(甚至在对象中创建函数)并且一切正常......
基本上,当您单击一个按钮时,它应该向该“p”容器发送一个数字并将其乘以 2
当我手动而不是循环时,我只是让它先创建对象 g_myobj,然后开始向对象添加项目......
但是现在我在循环中执行此操作 - 我觉得我无法在循环中创建空对象的语句,否则它将继续重新创建它;所以我越过了循环,在它自己的“脚本”标签中创建了对象……
那部分可能是这个问题,完全不确定......
另一个潜在的问题是我不确定我是否可以像这样在循环中完成所有这些操作
这是一个“php循环”,所以也许这一切都不能在这样的循环中完成……
发生的事情是第一个按钮有效,但其他按钮均无效......
所以,我希望有人能告诉我我在这方面做错了什么……
非常感谢...
【问题讨论】:
-
将所需的属性存储为按钮上的数据属性。通过在 JavaScript 中使用事件委托,您只需要一个包含您需要的逻辑的函数。
标签: javascript php mysql loops