使用JavaScript的Items.push变量

使用JavaScript的Items.push变量,javascript,jquery,cordova,getjson,Javascript,Jquery,Cordova,Getjson,我有一个JSON数组,我在我的应用程序中操作它 ... $.each(data, function(key, val) { val = link + val; foto = val; foto = foto.substr(0, foto.lastIndexOf(".")) + ".jpg"; /* Visualizza */ var elem = document.getElementById("archivio-num"); elem.inner

我有一个JSON数组,我在我的应用程序中操作它

...
$.each(data, function(key, val) {
    val = link + val;
    foto = val;
    foto = foto.substr(0, foto.lastIndexOf(".")) + ".jpg";
    /* Visualizza */
    var elem = document.getElementById("archivio-num");
    elem.innerHTML = '<a href="#"><img src="' + foto + '"></a>';
    elem.firstChild.onclick = function() {
        cordova.exec("ChildBrowserCommand.showWebPage", val);
    };
    items.push('<li id="' + key + '">' + elem.innerHTML + '</li>');
});
...
。。。
$。每个(数据、函数(键、值){
val=link+val;
foto=val;
foto=foto.substr(0,foto.lastIndexOf(“.”)+“.jpg”;
/*可视化*/
var elem=document.getElementById(“archivio num”);
elem.innerHTML='';
elem.firstChild.onclick=function(){
cordova.exec(“ChildBrowserCommand.showWebPage”,val);
};
items.push(“
  • “+elem.innerHTML+”
  • ”); }); ...
    现在我试着把所有的元素都推到外面,这些元素都打包在var元素里面。 Puttin only+elem+给我一个错误[ObjectHtmlDiscovery]。
    这可能吗?

    进一步利用jQuery,您可能希望尝试以下方法:

    ...
    var $ul = $("<ul/>");//jQuery object containing a dummy UL element in which to accumulate LI elements.
    $.each(data, function(key, val) {
        var url = link + val;
        var foto = url.substr(0, url.lastIndexOf(".")) + ".jpg";
        var $a = $('<a/>').attr('href',url).append($("<img/>").attr('src',foto)).on('click', function() {
            cordova.exec("ChildBrowserCommand.showWebPage", $(this).attr('href'));
            return false;
        });
        $ul.append($('<li/>').attr('id',key).append($a));
    });
    $("#archivio-num").html($a);
    ...
    
    。。。
    var$ul=$(“
      ”)//包含虚拟UL元素的jQuery对象,要在其中累积LI元素。 $。每个(数据、函数(键、值){ var url=link+val; var foto=url.substr(0,url.lastIndexOf(“.”)+“.jpg”; var$a=$('').attr('href',url).append($('').attr('id',key).append($a)); }); $(“#archivio num”).html($a); ...
    在这里,不是将HTML累积到数组中,而是将实际的LI元素累积到jQuery包装的UL元素中,该元素可用于代码后面的进一步处理(例如插入DOM)。

    
    
    <script type="text/javascript">
                 $.getJSON('http://www..../json.php', function(data) {
                          var items = [];
                          var url;
                          var foto;
                          var link = 'http://www.bla.com/';
                          var $div = $("<div/>");
    
                          $.each(data, function(key, val) {
                                 url = link + val;
                                 foto = url.substr(0, url.lastIndexOf(".")) + ".jpg";
                                 var $a = $('<a>').attr('href',url).append($("<img/>").attr('src',foto)).on('click',function(){
                                        cordova.exec("ChildBrowserCommand.showWebPage", $(this).attr('href'));
                                        return false;
                                        });
                                        $div.append($('<div/>').attr('id',key).append($a));
                                 });
                                 $("#archivio-num").html($a);                           
                          });
                </script>
    
    $.getJSON('http://www..../json.php,函数(数据){ var项目=[]; var-url; var foto; var-link=http://www.bla.com/'; 变量$div=$(“”); $。每个(数据、函数(键、值){ url=link+val; foto=url.substr(0,url.lastIndexOf(“.”)+“.jpg”; var$a=$('').attr('href',url).append($('').attr('id',key).append($a)); }); $(“#archivio num”).html($a); });
    您必须使用dom元素,如果您序列化div,您将丢失事件处理程序context谢谢您的帮助,我刚刚接触javascripting,使用jquery我根本无法让它工作。检查代码=>非常好!是我的代码需要调试,还是你做了完全不同的事情?