2013-06-25 2 views
1

DoRowApp Функция не определена в FF, IE, Opera. Работает в Chrome.Firefox, IE Opera - функция не определена

function DoRowApp(id) { 
document.getElementById('ANSWER.TTQ.MENSYS.1.').value = id; 
document.getElementById('ANSWER.TTQ.MENSYS.2.').click(); 
return true;} 

Это HTML

<a target="_blank" href="javascript:DoRowApp("_40558067");" title="Application Form"><img border="0"></a> 

, которые мы получаем из XML

<cell>Application Form^javascript:DoRowApp("'||edit.mhd_code||'");^_blank</cell></row> 

Как always..help было бы удивительным.

В то же время эта функция работает:

function DoRow(id) { 
'use strict'; 
var LowerBound, UpperBound, StartAppNo, BaseAppNo, i; 
LowerBound = mygrid.getRowIndex(id) - 25; 
UpperBound = mygrid.getRowIndex(id) + 100; 
StartAppNo = 25; 
BaseAppNo = 0; 
mygrid.selectRowById(id, true, true, false); 
localStorage.clear(); 
if (mygrid.getRowIndex(id) - 25 > 0) { 
    StartAppNo = 25; 
} 
else { 
     StartAppNo = mygrid.getRowIndex(id); 
    } 
localStorage.setItem("9999", StartAppNo); 
if (LowerBound < 0) {LowerBound = 0; } 
for (i = LowerBound; i <= UpperBound; i++) { 
    if (mygrid.getRowId(i)) { 
     localStorage.setItem(BaseAppNo, mygrid.getRowId(i)); 
     BaseAppNo++; 
    } 
} 
document.getElementById('ANSWER.TTQ.MENSYS.1.').value = id; 
document.getElementById('ANSWER.TTQ.MENSYS.2.').click(); 
return true;} 

И HTML для этого

<a target="_blank" href="javascript:DoRow("_40558067");" title="Application Form"><img border="0"></a> 
+5

I *** высоко *** предлагаем вам использовать обработчики событий вместо 'JavaScript:' в 'href'. –

+0

Моя установка Chrome актуальна, и у нее нет этой функции. – Renan

+0

Почему вы просто не вызвать fonction на 'onclick' случае ссылки, а затем вызвать' preventDefault() ', так что предотвращает поведение элемента по умолчанию при нажатии? –

ответ

0

Я рекомендую вам, чтобы позволить JavaScript из вашего XML:

<cell>Application Form^'||edit.mhd_code||'</cell> 

Или даже лучше

<cell rowId="'||edit.mhd_code||'">Application Form</cell> 

Затем производят следующий HTML:

<a href="#" class="RowButton" data-rowId="_40558067" title="Application Form"><img border="0"></a> 

Теперь вы можете добавить обработчик событий родовое в JavaScript:

function DoRowApp (rowId) { /**/ } 

// Simplified onLoad 
window.onload = function() { 

    // Enum all elements with class="RowButton" 
    var rowButtons = document.getElementByClassName("RowButton"); 
    for (var i = 0; i < rowButtons.length; i++) { 

     // Closure for i and rowButton 
     (function (i, rowButton) { 

      // get the data-rowId attribute 
      var rowId = rowButton.getAttribute("data-rowId"); 

      // Simplified addEventHandlerListener 
      rowButton.onclick = function() { 

       // call your function 
       DoRowApp(rowId); 

       // return false to prevent a href 
       return false; 
      }; 

     })(i, rowButton[i]); 
    } 
}; 

Я не вижу, где вы «открытие» другой веб-странице; в JavaScript перенаправление на другую страницу

window.location.href = "url"; 

Чтобы обеспечить это самый верхний фрейм, используйте

window.top.location.href = "url"; 

Чтобы открыть новое окно, используйте window.open

window.open(url, "_blank"); 

Дальнейшие показания

Как вы видите, чтобы иметь прочную основу для написания кросс-браузерный код JavaScript, то настоятельно рекомендуется использовать JQuery. Единственный способ написать простой javaScript - использовать только последние версии браузера, но как сказать, что пользователи ...

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

$(function() { // simplified jQuery(document).ready(function() { 

    // Enum all elements class="RowButton" and add click handler 
    $(".RowButton").click(function (e) { 
     e.preventDefault(); 

     // Call your function 
     DoRowApp($(this).attr("data-rowId")); 

    }); 

}); 

Как это выглядит, как вы стартер JavaScript, у меня есть желание, чтобы вы не использовать w3schools, прочитать почему на http://w3fools.com! Лучше прочитать

Смежные вопросы