【问题标题】:Pass php string as parameter for javascript function called in php script将 php 字符串作为参数传递给 php 脚本中调用的 javascript 函数
【发布时间】:2016-08-08 10:34:56
【问题描述】:

所以我有一系列由 php 脚本生成的单选按钮,当它们被点击时会调用 javascript 函数:

<?php
    $databases = mysqli_query($link, "SHOW DATABASES");
    while($row = mysqli_fetch_row($databases)) {
        $db = $row[0];
        echo "<input type='radio' name='database' id='".$db."' onclick='displaydbcontent(".$db.")'>";     
    }
?>

然后,javascript 函数必须提醒字符串的内容:

function displaydbcontent(dbid) {
    alert("This is a test");
    alert(dbid);
}

现在,无论变量 $db 的内容是什么,在显示第一个警报打印“This is a test”之后,第二个总是打印“[object HTMLInputElement]”。

我很确定这完全是引号问题,但我看不出有任何解决方法。

对于那些想知道它甚至认为它与我的问题没有太大关系的人来说,$link 变量已经初始化并且可以正常工作。

【问题讨论】:

  • 在页面中为不同的html元素添加相同的id和name是没有意义的..
  • 因为您将对象传递给函数,而不是字符串。
  • 名字一样,ID总是不一样。

标签: javascript php jquery function parameters


【解决方案1】:

this.id 作为参数传递,这将返回clicked-elementid 属性

onclick='displaydbcontent(this.id)'>"; 

当您将$db 作为参数传递时,它代表元素。带有id 的元素成为全局变量。

function callMe(elem) {
  console.log(elem);
}
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<div id='elem' onclick='callMe(elem)'>Hello!!!!!</div>

编辑:echo '&lt;input type="radio" name="database" id="'.$db.'" onclick="displaydbcontent(\'$db\')"&gt;';

【讨论】:

  • 乐于助人!请accept and up-vote解决目的的最佳解决方案:) 编码愉快!
  • 澄清一下,this.id 解决方案有效,另一个无效,因为 javascript 引号与 php 混淆了。
猜你喜欢
  • 2021-07-24
  • 2016-01-08
  • 2012-12-04
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
相关资源
最近更新 更多