2
[
    {
        "link"  : "images/examples/image-3.png", 
        "image" : "images/examples/image-3.png", 
        "title" : "copy"
    },
    {
        "link"  : "images/examples/image-3.png", 
        "video" : "video placeholder", 
        "title" : "copy"
    }               
]

この例では、この値が「video」の場合はこれを実行し、値が「image」の場合はこれを実行するという条件を設定したいのですが、「video」または「image」を処理できないようです。 "。

これは私の機能です:

$.getJSON("javascripts/media.json", function(data) {                            
    $("<ul class='gallery'></ul>").prependTo("#content");

    for (var i=0; i<data.length; i++) {
        var gallery = data[i];

        //alert(data[1]);
        if (gallery.image = true) {
            $(
            "<li class='image'>" +
                "<a class=\"imageLink\" href='" + gallery.link + "' rel=\"lightbox[gallery]\">" + 
                    "<img src=" + gallery.image + " alt=" + gallery.title + ">" +
                "</a>"
            + "</li>").appendTo(".gallery");    
        }
        else if (gallery.video = true) {
            $(
            "<li class='video'>" +
                "<a class=\"videoLink\" href='" + gallery.link + "' rel=\"lightbox[gallery]\">" + 
                    "<img src=" + gallery.video + " alt=" + gallery.title + ">" +
                "</a>"
            + "</li>").appendTo(".gallery");    
        }

    }
}).error(function() { alert("error"); });
4

3 に答える 3

4

状態gallery.imagegallery.video他に何もなければ、それを修正します。

あなたの最初の問題は、またはのいずれか=になる比較ではなく、単一の割り当てを使用することです。この最初の(画像)チェックは常に成功し、保存した画像リンクを value で上書きします。=====true

そして第二に、実際の値でtrue厳密にしない限り、何も比較する必要はありません。条件内の真の値を単独で使用してください。===true

最後に、実際にオブジェクトを操作します。jQuery が JSON をデコードするとすぐに、これは JSON とは何の関係もありません。

于 2012-07-10T21:37:57.377 に答える
3
 if(gallery.image) {
 //do stuff with it
 } else if( gallery.video ) {
 //do stuff with video
 }
于 2012-07-10T21:41:35.723 に答える
2

プロパティが存在するかどうか (特定のオブジェクトに対して定義されているかどうか) をチェックする標準的な方法は、演算子を使用し、同一性比較演算子orを使用typeofして文字列に対してチェックすることです。"undefined"===!==

このような:

if (typeof gallery.image !== "undefined")
   // image code
else if (typeof gallery.video !== "undefined")
   // video code

がのプロパティでない場合imageは、常に になります。標準の等価演算子ではなく、ID 演算子の 1 つを使用すると、サイレント型変換による問題を回避できます。gallerytypeof gallery.image"undefined"

他のアプローチは、多くの矛盾/問題の影響を受けます。

独自のコードは、テスト内のimageプロパティに値を割り当てるだけです。if

于 2012-07-10T21:45:38.763 に答える