Вы можете попробовать этот код здесь:
Описание:
Точный индекс предмета и проверить свою текущую позицию в массиве.
отображают текущий индекс.
, когда предыдущая кнопка проверяет, что первый элемент не является массивом, если не обуславливает декремент и отображает значение текущего элемента -1.
, когда вы щелкаете по следующему и тому же условию, и это последний элемент или нет, отметьте здесь и измените текущий индекс и приращение отображаемого значения 2.
в следующем приращении показа нажатия кнопки за раз по 2, потому что, когда текущий индекс увеличивается, тогда он показывает приращение 2, основная причина - это увеличение элемента 1, а индекс содержит 0. Таким образом, это увеличение на 2 за один раз.
Если вы показываете после itemIndex--;
, то вы увеличиваете на единицу.
var arr = [{'id':4},{'id':5},{'id':7},{'id':8},{'id':9}];
var current_id = 5;
//find the your current id is exist in the array
var itemIndex = arr.map(function(o) { return o.id; }).indexOf(current_id);
//display the value of index
document.getElementById('display').innerHTML = itemIndex+1;
document.getElementById('prev').addEventListener('click', function(e) {
if(itemIndex!=-1 && itemIndex != 0){
document.getElementById('display').innerHTML = itemIndex;
itemIndex--;
}
});
document.getElementById('next').addEventListener('click', function(e) {
if(itemIndex!==-1 && arr.length-1 > itemIndex){
document.getElementById('display').innerHTML = itemIndex+2;
itemIndex++;
/*document.getElementById('display').innerHTML = itemIndex+1;*/
}
});
<div id="display"></div>
<button id="prev">prev</button>
<button id="next">next</button>
Спасибо
Это - просто предположение, но возможно AQtime основан на технологии, которая подобна Microsoft Detours?
Обходы являются библиотекой для того, чтобы оснастить произвольные функции Win32 на x86, x64, и машины IA64. Обходы прерывают функции Win32 путем перезаписи кода в оперативной памяти для целевых функций.
Я не знаю о Delphi, в частности, но отладчик приложения C может сделать линию за линией профилирование относительно легко - это может загрузить код и связать каждый путь выполнения кода с блоком кода. Затем это может повредить на всех командах условного перехода и просто наблюдать и видеть, какой путь выполнения кода взят. Отладчики как gdb могут работать относительно эффективно, потому что они работают через ядро и не изменяют код, им просто сообщают, когда каждая строка выполняется. Если что-то заставляет блок выйтись ранний (longjmp), отладчик может сцепить это и выяснить, как далеко он вошел в блоки, когда это произошло и инкремент только те строки.
Конечно, все еще было бы трудно кодировать, но когда я говорю легко, что подразумеваю, что Вы могли сделать это без напрасно тратящего время, повредившись на каждой инструкции обновить счетчик.
Я сделал профилировщика с открытым исходным кодом для Delphi, которая делает то же: http://code.google.com/p/asmprofiler/
Это не прекрасно, но это свободно :-). Также использование метод Обхода. Это хранит каждый вызов (Вы должны ручной набор, который функционирует, Вы хотите представить), таким образом, это может сделать точное дерево истории вызовов, включая временную диаграмму (!).
Давно более не существующий TurboPower также имел большой инструмент профилирования/анализа для Delphi под названием Сыщик Комплект QA. Я нашел это намного более простым, чем AQTime, но также и намного легче получить значимый результат. Могло бы стоить попытаться разыскать - eBay, возможно?