2014-10-23 5 views
-3

У меня есть 2 JavaScript файлы:Как вызвать внешнюю функцию JavaScript в HTML?

FILE2.js и FILE1.js

внутри FILE1.js 3 функции:

  1. FUNCTION1
  2. Function2
  3. FUNCTION3

Question1: Как я могу л FUNCTION2 внутри FUNCTION1

question2: Внутри HTML я включаю FILE1 и FILE2 как:

<script type="text/javascript" src="Script/FILE1.js"></script> 
<script type="text/javascript" src="Script/FILE2.js"></script> 

Как сделать HTML, чтобы узнать, какой файл использовать, когда мне это нужно? и даже какой FUNCTION в этом файле?

Спасибо, и я ценю. OK вот коды

//return an array of values that match on a certain key 

FILE1, function1

function function1(obj, key) { 
    var community = []; 
    for (var i in obj) { 
     if (!obj.hasOwnProperty(i)) continue; 
     if (typeof obj[i] == 'object') { 
      community = community.concat(getValuesCommunity(obj[i], key)); 
     } else if (i == key) { 
      community.push(obj[i]); 
     } 
    } 
return community; 
} 

// split the string array into corresponding constituent 

еще FILE1, но function2

function function2() {  
    community = community.split("/"); 
    return community 

я должен позвонить function1 в function2 или наоборот, и как это делается ?

obj==ACTIVITY as shown in the JSON 

var ACTIVITIES = 
    {"games": 
      [ 
       {"Definition1": 
         [ 
          {"SPORTS" : "SPORTS"}, 
          {"PHYSICAL SPORTS" : "SPORTS/PHYSICAL SPORTS"}, 
          {"MENTAL SPORTS" : "SPORTS/MENTAL SPORTS"}, 
          {"COMPUTER GAMES" : "SPORTS/COMPUTER GAMES"}, 
          {"more" : "SPORTS/PHYSICAL GAMES/more"}, 
          {"and more" : "SPORTS/PHYSICAL GAMES/more/and more"} 
         ] 
       }, 
       {"Definition2": 
         [ 
          {"SPORTS" : "SPORTS"}, 
          {"name" : "article2"} 
         ] 
       } 
      ] 
    }; 

если называть JSON

<script> 
function myFunction() { 
        document.getElementById("loadJSON").innerHTML = getValuesCommunity(ACTIVITIES, "and more"); 
       } 
</script> 

<div> 
    <button onclick="myFunction()">Load and Read JSON file</button> 
    <p id="loadJSON"></p> 
</div> 

Если дать мне список

SPORTS,PHYSICAL SPORTS, more, and more 
+4

Было бы полезно, если бы вы могли опубликовать код, который используете. – danmullen

+0

@ danmullen Я включил код –

ответ

0
//Moved your array otherwise it will be overwritten every time you call function1 
var community = []; 
function function1(obj, key) { 
    for (var i in obj) { 
     if (!obj.hasOwnProperty(i)) continue; 
     if (typeof obj[i] == 'object') { 
      community = community.concat(getValuesCommunity(obj[i], key)); 
     } else if (i == key) { 
      community.push(obj[i]); 
     } 
    } 
//Replaced community with the function call as the function will return the community array. 
    return function2(); 
} 

function function2() {  
    community = community.split("/"); 
    return community 
} 

Я не тестировал ваш javascript, я просто перевел то, что вы просили.

+0

Спасибо за ваш ответ. Тем не менее, функции function1 и function2 находятся в одном файле. функция 1 имеет вход и его выход должен использоваться функцией2 –

+0

Ответы здесь, но я думаю, что вам трудно понять их. Me и T.J. Кроудер дал вам правильный ответ на ваш вопрос. Если вы не понимаете, попробуйте подробнее рассказать о своем вопросе или рассказать нам, что именно вы не понимаете. Путь js-файла не имеет значения, если эти файлы связаны, вы можете вызвать (любую) функцию, связанную с вашей веб-страницей. – NewToJS

+0

Вы увидите, что мои изменения отвечают на ваш вопрос, код по-прежнему не подходит для меня, но он отвечает на заданный вами вопрос, поэтому я был бы признателен, если вы проверите и отметьте как ответ. Если у вас все еще есть проблемы, я наберу пример, чтобы показать, что мои изменения отвечают на ваш вопрос. – NewToJS

1

Если предположить, что функции Глобалы, вы просто использовать их имена.

file1.js:

function function1() { 
} 

file2.js:

function function2() { 
} 

file3.js:

function function3() { 
    function1(); // <== Example call 
} 

Обратите внимание, что файл, содержащий функцию, должны быть включены в script тег перед тем вы вызываете эту функцию (так что функция определена).

Создание кучи таких глобальных переменных, как правило, не является лучшей практикой.Вместо этого следует использовать только один глобальный и делает функции свойства на нем:

file1.js:

var MyApp = MyApp || {}; 

MyApp.function1 = function() { 
}; 

file2.js:

var MyApp = MyApp || {}; 

MyApp.function2 = function() { 
}; 

file3.js:

var MyApp = MyApp || {}; 

MyApp.function3 = function() { 
    MyApp.function1(); // <=== Example call 
}; 

или использовать AMD (определение асинхронного модуля), например Requ ireJS.

+0

Спасибо за ваш ответ. Но в моем случае file3 не существует, а только функция 3, которая также находится в файле1. поэтому file1 имеет 2 функции, и я хочу, чтобы результаты из функции f1 вызывались в function3 –

+0

@KevinOluoch: Итак, вызывайте 'f1', а затем подайте его результат в' function3': 'function3 (f1())' –

-1

использовать javascript instanceof, чтобы найти функцию действительной: например, если (функция FUNCTION1 instaceof), чтобы решить, загружена ли она.

+0

Спасибо, но Im new для javascript , Я понятия не имею, что вы имеете в виду –

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