Когда функция вызывается с динамическими данными, она печатает результаты в новом окне - PullRequest
0 голосов
/ 26 марта 2011

Некоторые проблемы с JavaScript. Есть функция createPagination (index, n_pages). Это создает нумерацию страниц. Если вы вызываете функцию в режиме отладки таким способом createPaginatio (2,5), то есть с предоставлением статических значений, тогда разбиение на страницы создается в том же главном окне. Но если вы вызываете его с динамическими значениями, которые извлекаются откуда-то еще, тогда нумерация страниц создается в новом окне. И это неправильно, я хочу видеть это в том же главном окне. Это код:

 function createPagination (index, n_pages) {
alert(index+" "+n_pages)
var n_links = 5;
var n_index = index;


document.write('<table cellpadding="3" cellspacing="0" border="0" align="right"><tr>');


if (n_index != 0){ // if not a first page
document.write(' <td><a href="javascript:setMessaget('+0+')" ><img src="js/images/button_page_first.gif" alt="First page" width="20" height="20" border="0"></a> <a href="javascript:setMessaget('+(n_index - 1)+')" ><img src="js/images/button_page_prev.gif" alt="Previous page" width="20" height="20" border="0" ></a></td>');
}
document.write('<td>Page ' + n_index + ' of ' + n_pages + '.</td>');
if (n_links) {

if (n_links > n_pages)
n_links = n_pages;
document.write('<td>Page: ');
var n_sideLinks = Math.floor((n_links - 1) / 2),
 n_firstLink, n_lastLink;

if (n_index + n_sideLinks >= n_pages) {
n_firstLink = n_pages - n_links + 1;
n_lastLink = n_pages;
}

else if (n_index - n_sideLinks <= 0) {
n_firstLink = 1;
n_lastLink = n_links;
}

else {
n_firstLink = n_index - n_sideLinks;
n_lastLink = n_firstLink + n_links - 1;
}

for (var i = n_firstLink; i <= n_lastLink; i++){
document.write(i == n_index ? i + ' ' : '<a href="javascript:void(0)" onclick="setMessaget('+i+')">' + i + '</a> ');
} // for loop
document.write('</td>');

}

if (n_index != n_pages){
document.write('<td><a href="javascript:setMessaget('+(n_index + 1)+')" ><img src="js/images/button_page_next.gif" alt="Next page" width="20" height="20" border="0" /></a> <a href="javascript:setMessaget('+n_pages+')" > <img src="js/images/button_page_last.gif" alt="Last page" width="20" height="20" border="0" /></a></td>');
}

document.write(' </tr></table>');

}

Я попытался решить проблему, введя в document.write () Код: Код:

<a href="javascript:void(0)")> </a>

, но это не помогает.

Как хорошо я попробовал это: Код:

Код:

stopDef = function(e) {
if (e && e.preventDefault)
  e.preventDefault();
else if (window.event && window.event.returnValue)
  window.eventReturnValue = false;
};

Я вызвал эту функцию следующим образом: stopDef () Я не уверен, какое значение мне нужно передать. Что я делаю не так

Ответы [ 2 ]

0 голосов
/ 26 марта 2011
 I am retrieving values in this way:                                                                          

function setMessage(index, location, category, session)
        {
                var xmlHttp = getXmlHttpRequest();
                     //alert(index)
                xmlHttp.onreadystatechange=function()
                {
                    if(xmlHttp.readyState==4)
                    {                     
                        if(xmlHttp.responseText.indexOf("<body>") != -1) {
                            pageNumber = xmlHttp.responseText.substring(xmlHttp.responseText.indexOf("<title>") + 7, xmlHttp.responseText.indexOf("</title>")) // gets the number of table being sent from <title> tag
                            s = xmlHttp.responseText.substring(xmlHttp.responseText.indexOf("<body>") + 6, xmlHttp.responseText.indexOf("</body>"))

                           document.getElementById("output").innerHTML=s;
                            getTableNumber(pageNumber) // gets the number of tables available for display
                        } else {
                            document.getElementById("output").innerHTML=xmlHttp.responseText;
                        }                  
                    }                    
                 }

                    xmlHttp.open("GET","app/messages/" + index+"/"+location+"/"+category+"/"+session,true);
               xmlHttp.send(null);
            }
            // gets the number of tables (rows) being store in database for an individual user
              function getTableNumber(pageNumber){

                 var xmlHttp = getXmlHttpRequest();
                xmlHttp.onreadystatechange=function()
                {
                    if(xmlHttp.readyState==4)
                    {
                        if(xmlHttp.responseText.indexOf("<body>") != -1) {
                             s = xmlHttp.responseText.substring(xmlHttp.responseText.indexOf("<body>") + 6, xmlHttp.responseText.indexOf("</body>"))// retrieves number of tables stored in database

                       createPagination(pageNumber, s)// invokes function which creates paginations


                    }
                    }
                }
                xmlHttp.open("GET","app/messages/tableNumber/" +getCookie("eMartbyM"),true);
               xmlHttp.send(null);

             }

Последняя функция вызывает функцию createPagination (index, n_pages).

0 голосов
/ 26 марта 2011

Трудно сказать, потому что мы не знаем, как вы извлекаете значения и что вы подразумеваете под новым окном, но это может иметь какое-то отношение к тому факту, что вызов document.write на странице, которая уже загружена, перезаписывает содержание страницы.

...