协助循环中包含的javascript函数(PHP)

时间:2014-09-05 21:19:14

标签: javascript php mysql loops

我正在开发一个项目,我将部门存储在mysql数据库中,其中包含“division id”和“division name”;

我想要的是让我使用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循环”,所以也许这一切都不能在这样的循环中完成......

正在发生的事情是第一个按钮有效,但其他按钮都没有...

所以,我希望有人能告诉我这件事我做错了什么......

非常感谢...

2 个答案:

答案 0 :(得分:0)

如果您要做的只是向<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>

答案 1 :(得分:0)

渲染按钮时,应将id括在引号中,例如

<button id='<?php echo $button_id; ?>'><?php echo $div_name; ?></button>