我在尝试使用超链接时从数组中显示不同的确认文本时遇到问题。文本总是来自数组中的最后一个确认文本。我在这个论坛上看到了两个在函数中使用函数()的例子,但我无法通过查看示例来实现这一点。
这是我的代码:
echo '
<script type="text/javascript">
function getDetails(message)
{
if (confirm(message))
return true;
else
{
var links = document.getElementsByTagName("a");
for(i=0;i<links.length;i++)
links[i].href = item_NoLink;
}
}
</script>';
foreach ($items as $item)
{
$link = 'http://test_url/mytest.php;report='. $item['id'];
echo '
<script type="text/javascript">
var item_detail = ', json_encode($item['reported_spam']['detail']),'
var item_NoLink = ', json_encode('http://test_url/mytest.php;'),'
</script>
<a id="mylink[]" onclick="getDetails(item_detail);" href="'.$link.'" style="text-decoration:none;">
<img id="myImage" alt="" src="http://test_url/images/reported.gif" title="'.$item['reported_spam']['title'].'" style="position:relative;border=0px;vertical-align:middle;right:5px;" />
</a>';
}
感谢。
编辑:我明白了。
@Grant Zhu:数组在php中没有像那样编写,只需使用空方括号即可进入下一个键。你是对的,因为我确实为图像id数组和js变量做了一个错误。另外对于php在单引号内使用echo内的单引号时,必须使用反斜杠(除非再次使用php)。
我这样做了:
echo '
<script type="text/javascript">
var item_NoLink = ', json_encode('http://test_url/mytest.php;'),'
function getDetails(message)
{
if (confirm(message))
return true;
else
{
var links = document.getElementsByTagName("a");
for(i=0;i<links.length;i++)
links[i].href = item_NoLink;
}
}
</script>';
foreach ($items as $item)
{
$link = 'http://test_url/mytest.php?report='. $item['id'];
echo '
<a id="mylink[]" onclick="getDetails(\'',$item['reported_spam']['detail'],'\');" href="'.$link.'" style="text-decoration:none;">
<img id="myImage[]" alt="" src="http://test_url/images/reported.gif" title="'.$item['reported_spam']['title'].'" style="position:relative;border=0px;vertical-align:middle;right:5px;" />
</a>';
}
谢谢。
答案 0 :(得分:0)
$link = 'http://test_url/mytest.php;report='. $item['id'];
这段代码很奇怪,我认为你的代码可能是
$link = 'http://test_url/mytest.php?report='. $item['id'];
答案 1 :(得分:0)
你应该检查生成的javascript,你会发现有多个item_detail声明和item_NoLink声明。这意味着您一次又一次地将值分配给相同的变量。当然,最后一项任务最终会生效。
您可以将详细文本直接放在getDetails函数中。确保文字引用'。并且你最好使<a>
和<img>
的ID唯一,因为这就是id的含义。我不熟悉PHP,请检查下面的语法是否正确。
foreach ($items as $item)
{
$link = 'http://test_url/mytest.php;report='. $item['id'];
echo '
<a id="mylink$item['id']" onclick="getDetails(', json_encode($item['reported_spam']['detail']),');" href="'.$link.'" style="text-decoration:none;">
<img id="myImage$item['id']" alt="" src="http://test_url/images/reported.gif" title="'.$item['reported_spam']['title'].'" style="position:relative;border=0px;vertical-align:middle;right:5px;" />
</a>';
}