0

我在使用超链接时尝试从数组中显示不同的确认文本时遇到问题。文本始终来自数组中的最后一个确认文本。我在这个论坛上看到了 2 个在函数中使用 function() 的示例,但我无法通过查看示例来使其正常工作。

这是我的代码:

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>';

}

谢谢你。

4

2 回答 2

0

您应该检查生成的 javascript,您会发现 item_detail 和 item_NoLink 有多个声明。这意味着您一次又一次地将值分配给相同的变量。当然,最后的赋值最后才会生效。

您可以将详细文本直接放在 getDetails 函数中。确保文本由'引用。你最好让 id<a><img>unique 因为这就是 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>';

}
于 2013-03-18T05:04:15.743 回答
0
$link = 'http://test_url/mytest.php;report='. $item['id'];

这段代码很奇怪,我想你的代码可能是

$link = 'http://test_url/mytest.php?report='. $item['id'];
于 2013-03-18T04:44:23.180 回答