javascript - 协助将 javascript 函数包含在循环中 (PHP)

标签 javascript php mysql loops

我正在开发一个项目,其中我将部门存储在 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 循环”,所以也许这一切都不能在这样的循环中完成......

发生的事情是第一个按钮起作用,但其他按钮都不起作用......

所以,我希望有人能告诉我我在这方面做错了什么......

非常感谢...

最佳答案

如果您只想发送号码至 <p>并将其乘以 2,请参阅这一线性函数。我假设您想要完成的不仅仅是乘法,否则您可能只会完成如下所示的简单函数...

此外,我相信您会收到很多评论,但您不应该使用 mysql_功能不再了。它们都已被弃用并且可能不安全。您应该使用mysqliPDO准备好的陈述。

在您的按钮上,您可能应该在 id="yadayada" 周围加上引号。而不是id=yadayada 。 jQuery 可能是你的 js 处理函数或你拥有的东西的一个不错的选择。

<p id="id57512">How are you?</p>
<?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$div_id";
            $function_id    =   "f$div_id"; ?>

    <button id="<?php echo $button_id; ?>" onClick="MyRadFunction('<?php echo $div_id; ?>')">

<?php echo $div_name; ?></button>

<?php   } ?>

<script>

     function MyRadFunction(DivId) {
            $("#id57512").html(DivId*2);
        //  var NewNum  =   $("#id57512").text();
        }
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>

关于javascript - 协助将 javascript 函数包含在循环中 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694118/

相关文章:

mysql - 在mysql中创建记录

javascript - 如果我想为数组的单个索引添加多个元素,如何在 javascript 中填充数组

javascript - 放大 GeoJSON 多边形

PHP 和 Postman Curl 无选项错误和证书处理

php - 使用 Ajax 的动态菜单

sql - 如何使用 Zend_Db 选择列值为空/空的行?

javascript - 使用 Python 或 JavaScript 获取到 WhatsApp 的 websocket 连接?

JavaScript setInterval 函数替代

php - 如何在mysql中使用 ".="将mysql查询连接成单个查询

MySQL 从一个表中连接多行,而从其他表中只选择一行