【问题标题】:passing parameter from php(mysql_query result) to javascript function triggered by onchange event将参数从 php(mysql_query 结果)传递到由 onchange 事件触发的 javascript 函数
【发布时间】:2011-01-23 16:26:30
【问题描述】:

我有一个我无法解决的问题(我不知道为什么我是 php 和 js 的新手)。我有一个文本字段,我想在 js 中模糊触发一个函数。我的问题是我想在 tnis 函数中传递一个参数,该参数将从查询中获取。 我的测试代码是:

<script type="text/javascript">
  function calcNums(nums){
    var inText = "00.00";
    if (document.expences.mytext.value != inText){
    var mp = parseInt(nums.substr(0,2));
    var lp = parseInt(nums.substr(3,2));
    document.expences.mytext2.value = lpdeh*parseInt(document.expences.mytext.value)/100; 
    document.expences.mytext.value = mpdeh*parseInt(document.expences.mytext.value)/100; 
    } 
  }
</script>

<?php

    $selNums = "SELECT DEH_NUMS FROM BUILDING WHERE idBUILDING = '3'";
    $nums = mysql_query($selNums) or die("Could not execute query.");
    <input type="text" name="mytext" id="mytext"  value="00.00" onblur="calcNums($nums)"/>
    <input type="text" name="mytext2" id="mytext2"  value="00.00"/>
?> 

我的意思是:我得到类型为“50-50”的 $nums(代表百分比)。获取“mytext”的初始值并计算“mytext”和“mytext2”的新值。 例如:$nums='60-40' initialMytext=100 --> new mytext=60 mytext2=40

如果我在 calcNums() 中放置一个内部 var,计算是正确的,但不会触发参数。

有人可以帮忙吗? 提前致谢!

【问题讨论】:

  • 我想知道如何将参数传递给事件 onblur="calcNums($nums)

标签: php javascript mysql


【解决方案1】:

写这个,它会修复

<script type="text/javascript">
  function calcNums(nums){
    var inText = "00.00";
    if (document.expences.mytext.value != inText){
    var mp = parseInt(nums.substr(0,2));
    var lp = parseInt(nums.substr(3,2));
    document.expences.mytext2.value = lpdeh*parseInt(document.expences.mytext.value)/100; 
    document.expences.mytext.value = mpdeh*parseInt(document.expences.mytext.value)/100; 
    } 
  }
</script>

<?php
    $selNums = "SELECT DEH_NUMS FROM BUILDING WHERE idBUILDING = '3'";
    $results = mysql_query($selNums);
    if (!$results) die("Could not execute query.");

    $row = mysql_fetch_assoc($results);
    $nums = $row['DEH_NUMS'];
?>
<input type="text" name="mytext" id="mytext"  value="00.00" onblur="calcNums('<?php echo $nums;?>')"/>
<input type="text" name="mytext2" id="mytext2"  value="00.00"/> 

【讨论】:

  • 我这样做了,而不是带回我的查询的“60-40”,现在它变成了“20”。
  • @Olga:我认为您的代码中几乎没有错误我正在编辑我的回复检查它我认为它会有所帮助
  • 我写了你的代码,但结果是一样的。我的查询带来了 $nums='60-40' 但是当我将 alert(nums) 放入 calcNums 时,我得到'20'!这怎么可能????
  • 您是否使用 ''... 单引号... 它应该使其成为字符串,并且您应该将 nums 作为数据中的字符串。你能检查你的页面源你在浏览器中得到了什么 onblur="calcNums('???')"
  • 抱歉,感谢您的时间和帮助。我没有注意到引号!我有多傻???
【解决方案2】:

您正在 PHP 中混合 HTML。做这样的事情:

<?php
$selNums = "SELECT DEH_NUMS FROM BUILDING WHERE idBUILDING = '3'";
$nums = mysql_query($selNums) or die("Could not execute query.");
?>
<input type="text" name="mytext" id="mytext"  value="00.00" onblur="calcNums(<?php $nums ?>)"/>
<input type="text" name="mytext2" id="mytext2"  value="00.00"/>

【讨论】:

  • 输入已关闭 php 块。我尝试了“calcNums()”(这是我以前不知道的),当我将 alert(nums) 放入函数中时,它给了我一个未定义的字段。你能告诉我为什么吗?
  • 给我“资源 id #9”。不知道这是什么意思。在 mysql 中,查询返回正确的结果。
  • $selNums = "从 idBUILDING = '3' 的建筑中选择 DEH_NUMS"; $res = mysql_query($selNums) or die("无法执行查询。"); $row = mysql_fetch_array($res); $nums = $row['DEH_NUMS'];我发现出了什么问题。这应该是我的代码。谢谢
  • @Olga Anastasiadou 给了我“资源 id #9”实际上你在 mysql_query 之后得到的是结果集,你必须使用任何提供的方法来解析它,比如 while($row=mysql_fetch_array($res)) { $return[] = $row; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多