我想发送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>
答案 0 :(得分:0)
您没有引用onclick中的参数,因此您的代码看起来就像:
<a href="#" onclick="doSomething(Hello, World!)" ...
将变量的内容转换为未定义的变量和语法错误(“非括号”?)。
尝试
<a href="#" onclick="doSomething('$title', '$string')" id= etc...
而是..注意变量周围的引号。另请注意,您永远不应将PHP数据直接转储到这样的Javascript上下文中。正如您所知,最轻微的故障,您已经引入了JS语法错误,这会导致整个javascript块崩溃。
始终输出json_encode()'d数据,确保您生成语法上有效的JS代码。
答案 1 :(得分:-1)
您只需要将值连接到echo字符串中:
echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string . '\')" id="' . $title . '" return false;" title="' . $title . '">' . $title . '</a></strong><br />';
答案 2 :(得分:-1)
当你打印php变量时,它只打印变量,所以如果$ title等于Hello,Java Script解释器会认为Java Script中有一个名为Hello的变量。 为避免这种情况,您必须在HTML中将引号内的变量值打印到HTML中。
$string = 'World!';
$title = 'Hello';
echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string '\')" id="'.$title.'" return false;" title="'.$title.'">'.$title.'</a></strong><br />';