-2

我想发送 2 个变量(我使用 php 创建一个 html 元素),当用户单击时,会弹出一个带有 2 个变量的警报。我已经设置好了:

PHP:

$item = array ( 
        'string' => $node->getElementsByTagName('string1')->item(0)->nodeValue,
        'string2' => $node->getElementsByTagName('string2')->item(0)->nodeValue,
        );


$string1 = str_replace(' & ', ' & ', $item['string']);
$string2 = str_replace(' & ', ' & ', $item['string2']);

<a href="#" onclick="doSomething($string1, $string2)" id="'.$title.'" return false;"  title="'.$title.'">'.$title.'</a></strong><br />';

Javascript:

<script>
    function doSomething(variable1,variable2) {

    var myVar1 = variable1;
    var myVar2 = variable2;

        alert (myVar1+ ' ' +myVar2);
        return false;

    }
</script>

我试过这个,但是当我点击链接时没有任何反应。

将变量从 php 发送到 javascript 的正确方法是什么?

感谢您的时间。是否有可能做到这一点?

  <a href="#" onclick"doSomething(this) id="'.string1.'" description="'.string2.'" />link </a>

并这样做而不是其他解决方案?

<script>
        function doSomething(obj) {

    if(obj!= null)
 alert ('Obj is Null');
 }else {
            alert (obj.getAttributeById("id")+' '+obj.getAttributeById("description"));
            return false;

        }
    </script>
4

3 回答 3

0

您没有在 onclick 中引用参数,因此您的代码看起来像:

<a href="#" onclick="doSomething(Hello, World!)" ...

将变量的内容变成未定义的变量和语法错误(“非括号”?)。

尝试

<a href="#" onclick="doSomething('$title', '$string')" id= etc...

相反..注意变量周围的引号。另请注意,您永远不应该将 PHP 数据直接转储到这样的 Javascript 上下文中。正如您所发现的,最轻微的故障并且您引入了一个 JS 语法错误,这会杀死整个 javascript 块。

始终输出 json_encode()'d 数据,确保生成语法上有效的 JS 代码。

于 2013-11-14T21:36:44.497 回答
-1

您只需要将值连接到您的回显字符串中:

echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string . '\')" id="' . $title . '" return false;"  title="' . $title . '">' . $title . '</a></strong><br />';
于 2013-11-14T21:35:43.450 回答
-1

当您打印 php 变量时,它只打印变量,因此如果 $title 等于 Hello,Java Script 解释器认为 Java Script 中有一个名为 Hello 的变量。为避免这种情况,您必须将引号内的变量值打印到 HTML 中。

$string = 'World!';
$title = 'Hello';

echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string '\')" id="'.$title.'" return false;" title="'.$title.'">'.$title.'</a></strong><br />';
于 2013-11-14T21:38:03.383 回答