0

ハイパーリンクを使用しているときに、配列から別の確認テキストを表示しようとすると問題が発生します。テキストは常に、配列内の最後の確認テキストからのものになります。このフォーラムで関数でfunction()を使用した2つの例を見ましたが、例を表示してもこれを機能させることができませんでした。

これが私のコードです:

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
$link = 'http://test_url/mytest.php;report='. $item['id'];

このコードは奇妙です。あなたのコードはおそらく

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

生成された JavaScript を確認する必要があります。item_detail と item_NoLink の複数の宣言があることがわかります。つまり、値を同じ変数に何度も割り当てることになります。もちろん、最後の割り当ては最後に有効になります。

詳細テキストを getDetails 関数に直接入れることができます。テキストが ' で引用されていることを確認してください。それがidの意味であるため、idを<a>一意<img>にすることをお勧めします。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 に答える