2015-07-02 3 views
0

У меня есть 2 файла js. В первом из них у меня есть это:Функция jquery, называемая несколько раз

var functionName = "video"; 
var cont = 1; 

$(function() { 
    window.control = function control() { 
     var tipo1 = functionName + cont + "();"; 
     var tipo2 = eval(tipo1); 
     tipo2; 
     cont++; 
    }); 

Во втором:

function video1() { 
    control(); 
} 

function video2() { 
    control(); 
} 

Первый раз это было хорошо, но во втором, сначала необходимо выполнить video1(), а затем video2(), почему?

+0

Это не решит проблему, но, пожалуйста, не используйте 'eval()'. Попробуйте 'window [tipo1]();' вместо этого. Обратите внимание, что вам может потребоваться изменить «окно» в зависимости от вашей логической структуры. –

+0

спасибо за совет, но если я вызову окно [tipo1](); в консоли есть ошибка: «window [tipo1] не является функцией« –

ответ

3

Ваше определение является неправильным:

window.control = function control() { 

Я полагаю, из-за этого он стреляет control() исполнение.

Измените это:

window.control = function() { 

Кроме того, я не вижу никаких оснований для определения этой функции в DOM состоянии готовности. Это просто вызовет путаницу и потенциальные проблемы. Определение функции выполняется только в точке выполнения, они должны потенциально находиться в состоянии готовности DOM в зависимости от их использования.

+0

спасибо, но не использую для меня. Я удаляю окно, и у меня просто есть функция управления(). Но это то же самое, сначала выполните видео1, а затем видео2. –

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