onclick确认函数与数组中的不同文本

时间:2013-03-18 04:23:01

标签: php javascript

我在尝试使用超链接时从数组中显示不同的确认文本时遇到问题。文本总是来自数组中的最后一个确认文本。我在这个论坛上看到了两个在函数中使用函数()的例子,但我无法通过查看示例来实现这一点。

这是我的代码:

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

}

谢谢。

2 个答案:

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

}