Javascript: работа с DOM и join () - PullRequest
       0

Javascript: работа с DOM и join ()

0 голосов
/ 03 августа 2011

У меня есть две функции, одна из которых создает таблицу следующим образом:

function return_formatted_results(result_no,addy,title,own_comment)
        {
var div=document.createElement("DIV");
attr(div, 'id', 'div_id'+result_no);

var form=document.createElement("FORM");
attr(form, 'id', 'det_'+result_no);
attr(form, 'name', 'form'+result_no);
attr(form, 'method', 'post');
attr(form, 'action', '');

// ###############
// add all other objects and attributes here
// ###################

form.appendChild(table);
div.appendChild(form);
}

, а затем у меня есть эта функция, которая вызывает вышеуказанную функцию:

    function get_urls_and_display()
    {


        var allTables=new Array();

        for(var i=0;i<url.length;i++)
{   allTables[i]=return_formatted_results(i,url[i],the_title[i],the_comm[i]);   }

        document.getElementById("wait").appendChild(allTables.join("\n\n"));

Проблема заключается вjoin() в последней строке выдает ошибку.Я новичок в работе со всем DOM, как я делал выше, поэтому понятия не имею, что использовать вместо этого.Раньше я использовал обычный html и тогда работал join ().

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

У вас есть несколько проблем:

  1. return_formatted_results фактически ничего не возвращает (иронично, потому что это явно указано в имени)
  2. join действительно только для строк.

После того, как вы сделаете return_formatted_results return div, попробуйте это для get_urls_and_display:

function get_urls_and_display() {
    var wait=document.getElementById("wait");
    for(var i=0; i<url.length; i++) {
        var div=return_formatted_results(i, url[i], the_title[i], the_comm[i]);
        wait.appendChild(div);
    }
}

Кроме того, похоже, что у вас есть три разных массива, каждый из которых содержит связанные данные. Более подходящей структурой данных будет список объектов. Вы можете определить это так:

var data=[
    {
        url: "http://www.example.com/a",
        title: "Link A",
        comment: "This is the first link."
    },
    {
        url: "http://www.example.com/b",
        title: "Link B",
        comment: "This is the second link."
    }
    // ...
];

Вот как get_urls_and_display будет выглядеть следующим образом:

function get_urls_and_display() {
    var wait=document.getElementById("wait");
    for(var i=0; i<data.length; i++) {
        var datum=data[i];
        var div=return_formatted_results(i, datum.url, datum.title, datum.comment);
        wait.appendChild(div);
    }
}
0 голосов
/ 03 августа 2011

У вас нет возвращаемого значения из return_formatted_results, и даже если вы это сделаете, это будет элемент DOM. Вы не можете join массив объектов DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...