Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   обращение из html к методам в файле.js (https://javascript.ru/forum/misc/39319-obrashhenie-iz-html-k-metodam-v-fajjle-js.html)

riva 25.06.2013 14:39

обращение из html к методам в файле.js
 
Подскажите, как сделать ,чтобы из html передать и и получить возвращаемое значение ,в файл.js ?
function myswf()
{
    function calc( a ,b )
    {
        console.log( "nnn" )
        return a + b ;
    }
}

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" path="myswf.js"></script>
    <script>
    /*что нужно написать здесь ,чтобы передать и получить значение
     *из метода calc? 
     */
    </script>
</head>
<body>

</body>
</html>

skrudjmakdak 25.06.2013 14:44

function myswf(a, b)
{
    function calc( a ,b )
    {
        console.log( "nnn" )
        return a + b ;
    }
return calc( a ,b );
}


то что нужно написать
console.log(myswf(4, 5))

danik.js 25.06.2013 14:49

Цитата:

Сообщение от riva
script type="text/javascript" path="myswf.js"></script>

атрибут должен быть не path, а src )

riva 25.06.2013 14:54

сделал так
myswf.js
function myswf( a , b )
{
    function calc( a , b )
    {
        console.log( "calc" )
        return a + b ;
    }
    return calc( a , b )
}

html
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" path="myswf.js"></script>
    <script>
          console.log( myswf( 2 ,4 ) )
    </script>
</head>
<body>

</body>
</html>

ошибка :
Цитата:

Uncaught ReferenceError: myswf is not defined

Deff 25.06.2013 14:59

<script type="text/javascript" path="myswf.js"></script>
Цитата:

<script type="text/javascript" src="myswf.js"></script>

riva 25.06.2013 15:01

Спасибо Вам! И у меня ещё вопрос - в js передавать параметры нужно через конструктор? В нем нет static function? Чтобы минуя myswf сразу к calc обратится?

riva 25.06.2013 15:05

И это я тоже понял. Получается ,что метод calc вложенный в конструктор...Просто по началу подумал ,что myswf это обьявление класса ,а тут получается ,что конструктора.

riva 25.06.2013 16:00

Немножко я поспешил. При использовании swfobject в файл.html
передают параметры через конструктор в функцию
swfobject.embedSWF(..param) ;

Сам swfobject выглядит как то так -
var swfobject=function(){
/*...тело 
*и где то тут */
embedSWF:function(...param)
{
/*тело*/
}

я пытаюсь сделать тоже самое .то есть через конструктор передать параметры его методу, но не получается. Почему?
function myswf()
{
    next : function( a ,b )
    {
        console.log( a + b ) ;
    }
}

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="myswf.js"></script>
    <script>
        var a = 1 ;
        var b = 2 ;
        myswf.next( a ,b )
    </script>
</head>
<body>

</body>
</html>

и даже так пробовал
var myswf = function ()
{
    next : function( a ,b )
    {
        console.log( a + b ) ;
    }
}

skrudjmakdak 25.06.2013 16:50

<script>
//класс
function Obj()
	{
	return {
		method: function(a, b)
			{
			return a + b;
			}
		};
	}

//объявляем экземпляр класса
var obj = Obj();
//обращаемся к методу класса и результат сохраняем в переменную
var result = obj.method(1, 4);
console.log(result);
</script>

danik.js 25.06.2013 17:09

skrudjmakdak для этого существуют прототипы:
//класс
function Obj()
{
    //
}
Obj.prototype.method = function(a, b)
{
    return a + b;
};
//объявляем экземпляр класса
var obj = new Obj();
//обращаемся к методу класса и результат сохраняем в переменную
var result = obj.method(1, 4);
console.log(result);

skrudjmakdak 25.06.2013 17:10

собственно а в чем разница? что так идет что так.. Знайте такое: кто как может тот так и др**ит))

danik.js 25.06.2013 17:20

Цитата:

Сообщение от skrudjmakdak
собственно а в чем разница?

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

skrudjmakdak 25.06.2013 17:23

ммм.. почитаю как нибудь на досуге

riva 25.06.2013 17:41

skrudjmakdak Спасибо! Только у меня Ваш пример не получилось сразу применить. Сидел около часа и пытался разобраться в чем дело.
Потом просто скопировал Ваш код - и заработало. И хочется спросить -
в чем разница между этими двумя ( для меня одинаковыми ) кодами ?
Ваш :
function Obj()
        {
            return {
                method: function(a,b)
                {
                    return a + b;
                }
            };
        }

мой :
function Obj()
        {
            return 
            {
                method: function(a,b)
                {
                    return a + b;
                }
            };
        }

skrudjmakdak 25.06.2013 17:43

я знаю.. тупо конечно... но дело именно в этом:
return
     {

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

riva 25.06.2013 17:46

Пойду тогда ещё про прототипы почитаю ,иии...если что то спрошу ещё что нибудь)

riva 25.06.2013 18:12

И есть ещё не понятный момент. Файл.js лежит в том же пакете ,что и html
в котором ,как я понимаю есть строчка указывающая на путь для импорта:
<script type="text/javascript" src="Obj.js"></script>

Теперь по все той же простой логике я создаю экземпляр класса и обращаюсь к его свойству через переменную ссылающуюся на это экземпляр:
<script type="text/javascript" src="Obj.js"></script>
    <script>
        var obj = new Obj();
        var res = obj.method( 4 , 7 );
        console.log( res ) ;
    </script>

И класс Obj создан так как вы мне и показывали. Что я не так делаю?

danik.js 25.06.2013 18:51

Цитата:

Сообщение от skrudjmakdak
кавычка начинается с новой строчки, а должна быть на той же(как у меня). почему, не знаю

Потому что в js можно не ставить в конце инструкций точку с запятой, так что парсер сам догадывается где конец строки означает конец инструкции. В таких случаях как этот, конец строки распознается как конец инструкции. Вот такие пироги. Быть может не совсем верно все объяснил (ну не читал я умных книжек, не читал), но суть примерно такая.

skrudjmakdak 25.06.2013 20:40

riva, теперь открывайте фаербаг (в хроме f12), вкладка консоль.. и смотрим что там пишут...

по идеи должна вывалиться ошибка (если код не отрабатывается), а также номер строчки и имя файла в котором произошла ошибка..

skrudjmakdak 25.06.2013 20:40

пишите что за ошибка, либо кидайте скриншот.. поглядим))

riva 25.06.2013 21:06

Мистика да и только! Сейчас хотел выложить ,то что у меня ,включил - заработало!)
После флешевской консоли ,консоль WS ,кажется какой то хромой)
Есть программы лучше? Чтоб тоже консоль была и не надо было ,то в браузере передёргивать ,то в консоли?

riva 25.06.2013 21:13

И еще вопрос в догонку. Где то, тут на форуме прочел, что js это язык для браузера ,но есть разновидность серверного json. И
мне стало интересно - а этот json умеет делать тоже самое, что и php ? Конкретно, он может подсчитать кол-во файлов ,узнать их формат и размер ,сгенерировать xml ? А то писать код на php сейчас ,у меня нет вообще не каких шансов ,а js хоть немного похож на as)

skrudjmakdak 25.06.2013 23:07

имхо я считаю. лучшая консоль - браузерная консоль (разумеется нормального браузера, НЕ ие). среда разработки - это среда. там вы только правите код. а отлаживайте в браузере..

json - это как и xml. только формат хранения данных (точней передачи, хотя можно и хранить, никто не запрещает) другой.
js - клиентский язык
php - серверный
xml и json - данные в определенном формате. (в нете полно инфы)

riva 25.06.2013 23:42

skrudjmakdak Спасибо! ...читать...

dmitriymar 25.06.2013 23:53

Цитата:

Сообщение от skrudjmakdak
js - клиентский язык

да?
http://ru.wikipedia.org/wiki/Nodejs

Цитата:

Сообщение от skrudjmakdak
xml и json - данные в определенном формате. (в нете полно инфы)

да?
http://ru.wikipedia.org/wiki/XML
http://ru.wikipedia.org/wiki/JSON

Цитата:

Сообщение от skrudjmakdak
php - серверный

да?
http://habrahabr.ru/post/19004/

Цитата:

Сообщение от skrudjmakdak
json - это как и xml. только формат хранения данных (точней передачи, хотя можно и хранить, никто не запрещает) другой.

да?

skrudjmakdak 26.06.2013 09:22

то js, a то nodejs. в данном случае js рассматривается как клиентский язык

json чем вам не понравился. источник на который вы указывайте, прям на первой строчке написано: JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными. я написал тоже самое..

с пхп вы далеко пошли.. также можно опять таки сказать, что js используется на smartTV. там специфика своя. ну и?? можно еще дальше копнуть, а оно ему сейчас надо?

dmitriymar 26.06.2013 09:41

Цитата:

Сообщение от skrudjmakdak
то js, a то nodejs. в данном случае js рассматривается как клиентский язык

чувак бред не неси - впрочем ты его практически всегда несёшь. на клиенте js как базовый так и клиентский -какой из них js ?
Цитата:

Сообщение от skrudjmakdak
json чем вам не понравился. источник на который вы указывайте, прям на первой строчке написано: JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными. я написал тоже самое..

ещё раз по ссылкам -ясон формат , хмл -язык и далее по тексту

Цитата:

Сообщение от skrudjmakdak
можно еще дальше копнуть, а оно ему сейчас надо?

вывод конечно замечательный, что ему нужна левая не правильная и не соответствующая реальности. мож сам он будет решать , какая ему информация нужна , а не ты? или ты считаешь норм , что он пыху начнёт учить только по тому что "скрипт не серверный"

skrudjmakdak 26.06.2013 09:52

типа ты у нас тут самый умный? к чему все это?

>>вывод конечно замечательный, что ему нужна левая не правильная и не соответствующая реальности. мож сам он будет решать , какая ему информация нужна , а не ты?

ну да.. человек только функции осваивает. а ты ему про ноде..

не вижу смысла дальше в открытую на эту тему беседовать. хотел показать себя? показал!

dmitriymar 26.06.2013 10:02

Цитата:

Сообщение от skrudjmakdak
ну да.. человек только функции осваивает. а ты ему про ноде..

т.е норм закладывать неправильную базу ?:D ню ню....

danik.js 26.06.2013 10:10

Цитата:

Сообщение от skrudjmakdak
ну да.. человек только функции осваивает. а ты ему про ноде..

Вобщето человек сказал что слышал что-то про серверный js и интересуется этой темой, а ты ему втираешь что такого нет.

Цитата:

Сообщение от skrudjmakdak
также можно опять таки сказать, что js используется на smartTV

Как он там используется? В приложениях? В любом случае сейчас js используется много где, не только в браузере и на сервере. Он уже давно перестал быть просто браузерным скриптовым языком, как он изначалально был задуман.
И не нужно дергаться если тебя поправляют, когда ты в чем-то ошибаешься.

skrudjmakdak 26.06.2013 10:18

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

это было последнее мое к вам сообщение по этой теме. дальше я на ваши сообщения отвечать не буду. а уже писал по этому поводу.

riva 26.06.2013 13:45

Если сказать честно, то знать по началу теорию - более чем полезно.
Много раз сталкивался с тем, что из-за не понимания теории, приходилось менять концепцию написания кода. Что я думаю в тот момент, когда потратил много времени на чтение и на тестовые строчки кода ,прежде чем соберу все в кучу и прежде чем узнаю что это неправильно...
В такие моменты в голову лезут разные мысли ,но я ещё не раз не пожалел! Так как ,всегда оказывается ,что в момент постежения узнаешь очень много полезного.
Так ,что если в дальнейшем в своих темах я буду читать вот такие дебаты - то я буду только рад этому. И не только мне ведь это полезно.
Спасибо всем!


Часовой пояс GMT +3, время: 10:48.