我可以在PHP循环中创建JavaScript函数吗?

时间:2017-08-02 04:32:30

标签: javascript php

我想使用JavaScript发出提醒。这是我toString的一个例子。 当我单击第一个名称时,将显示包含名字的警报。但它会显示包含第二个名称的警报。 这是我的代码:

bls.hol.es

这是否可以按我的方式完成?

我的代码有什么问题?

3 个答案:

答案 0 :(得分:2)

这是因为你在循环中创建了js函数call(),所以从技术上讲,你在结果代码中有两个call()声明。当您调用call()函数时,它们都会被处理。

我假设您希望将来在call()中使用更多逻辑,因此解决方案是更改您的js代码以将名称作为参数处理,并将其移出循环之外,如:

 function call(name){
     alert(name);
 }

并改变链接:

<a href="javascript:call('<?php echo $name;?>');"><?php echo $name;?></a>

答案 1 :(得分:1)

使用php循环使用内联onclick循环html。

<a onclick="alert(this.innerHTML);">iqbal</a>
<a onclick="alert(this.innerHTML);">rezza</a>

这是php:

$arrayname=array('iqbal', 'rezza');
foreach($arrayname as $v){
    echo "<a onclick='alert(this.innerHTML);'>$v</a>";
    // or echo "<a onclick='alert($v);'>$v</a>";
}

底线是,您不想编写重复的功能。编写一个函数,根据需要多次调用它,并将$v作为参数传递给它,然后您可以使用函数内的参数执行任何操作。

如果您正在进行函数调用并希望一次发送三个变量,可以在php中将其设置为:

<script>
function call(one,two,three){
    alert(one);
    alert(two);
    alert(three);
}
</script>
<?php
$array=[
    ['a','b','c'],
    ['d','e','f']
];

foreach($array as $a){
    echo "<a href=\"javascript:call('{$a[0]}','{$a[1]}','{$a[2]}');\">{$a[0]} and {$a[1]} and {$a[2]}</a>";
}

答案 2 :(得分:1)

你的代码出了什么问题,第二遍循环重新定义了带有第二个名字的call()函数,所以当它在浏览器窗口中呈现时,只有该函数的第二个实例可以运行。