Отображать данные массива в таблице с 2 столбцами, используя Javascript - PullRequest
1 голос
/ 13 июня 2011

У меня есть следующий код -

    <script type="text/javascript">
function test() {
    var results = "";
    var myArray    = new Array();
    myArray[0] = "Customizable";
    myArray[1] = "Marketing Collateral";
    myArray[2] = "Online Marketing";
    myArray[3] = "Training";
    myArray[4] = "Event Resources";
    myArray[5] = "Marketing Logos";
    myArray[6] = "Competitive Solution Comparison";
    myArray[7] = "Sales Tools";
    myArray[8] = "Retail Marketing"
    myArray[9] = "Internal";        

    results = "<table>";
for (var i=0; i<myArray.length; i++) {
    results += "<tr><td>" + myArray[i] + "</td>";  
    results += "<td>" + myArray[i+1] + "</td></tr>";  
}

results += "<tr><td colspan=2><a href='#' onclick='javascript:RedirectParentToDownload();'>View all content ></a></td></tr>";
results += "<table><br /> <br />";

 var div = document.getElementById("associatedAssets");
    div.innerHTML = results;    
}
</script>
<body onload="javascript:test();">
<div id="associatedAssets"></div>


 </body>

Как получить выходные данные в виде 2 столбцов и n строк?Я хочу, чтобы вывод выглядел примерно так -

    Customizable      Marketing Collateral
    Online Marketing  Training
    Event Resources   Marketing Logos
    etc

Ответы [ 3 ]

1 голос
/ 13 июня 2011

Если вы измените свой цикл на это:

for (var i=0; i<myArray.length; i=i+2) {

Тогда ваш код в основном работает. Однако вам нужно проверить, существует ли myArray[i+1], чтобы он также работал с нечетным числом элементов.

1 голос
/ 13 июня 2011

Здесь оно работает и исправлено.

Здесь нужно пропустить 2-е число из-за 2 столбцов

for (var i = 0; i < myArray.length; i+=2 )

Вы также должны проверить второй элемент. Если элементы в массиве даже не являются проблемой, они делятся на 2. Если это нечетно, вы вызываете элемент, который не существует. Проверьте, не определено ли оно с помощью троичного оператора

( myArray[i+1]===undefined ? '' : myArray[i+1] )

или более простой

( myArray[i+1] || '' )
0 голосов
/ 13 июня 2011

В цикле for необходимо использовать шаг 2 для i.
Также добавьте проверку, чтобы увидеть, существует ли элемент i + 1 перед его использованием при объединении содержимого массива с HTML-строкой.

Попробуйте это:

    function test() {
        var results = "";
        var myArray    = new Array();
        myArray[0] = "Customizable";
        myArray[1] = "Marketing Collateral";
        myArray[2] = "Online Marketing";
        myArray[3] = "Training";
        myArray[4] = "Event Resources";
        myArray[5] = "Marketing Logos";
        myArray[6] = "Competitive Solution Comparison";
        myArray[7] = "Sales Tools";
        myArray[8] = "Retail Marketing"
        myArray[9] = "Internal";        

        results = "<table>";
            for (var i=0; i<myArray.length; i=i+2) { //###NOTICE THE CHANGE FROM i++ TO     i=i+2               
                results += "<tr><td>" + myArray[i] + "</td>";  
                if(i+1 < myArray.length){
                                results += "<td>" + myArray[i+1] + "</td></tr>";  
                } else{
                             results += "<td></td></tr>";   
                }
            }

        results += "<tr><td colspan=2><a href='#' onclick='javascript:RedirectParentToDownload();'>View all content ></a></td></tr>";
        results += "<table><br /> <br />";

         var div = document.getElementById("associatedAssets");
        div.innerHTML = results;    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...