Получение функций JavaScript для работы в HTML? - PullRequest
1 голос
/ 20 февраля 2011

Я пытаюсь написать простую функцию.В качестве теста я написал следующее: (извините, я не знаю, как форматировать на этой странице)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for Linux (vers 6 November 2007), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Examples of Strings</title>

<script type="text/javascript">
//<![CDATA[
         <!-- hide me
         // get a name 


// declarations
var int firstVariable =  7;
var int firstVariable = 9;


// stop hiding me -->
//]]>
</script>
</head>
<body>
<h1>My First Function</h1>
<script type="text/javascript">
//<![CDATA[
         <!-- hide me


function name(firstVariable, secondVariable){

    int result = firstVariable + secondVariable;
    document.writeln(result);
    return result;
}




// show me -->
//]]>
</script>
</body>
</html>

Валидатор http://validator.w3.org/check говорит, что это прекрасно.ОДНАКО, ни при каких обстоятельствах я не могу заставить функцию работать.Я делаю что-то принципиально неправильное в отношении объектной модели документа?

Ответы [ 6 ]

2 голосов
/ 20 февраля 2011

ты забыл вызвать функцию ??(назначьте его типу события)

0 голосов
/ 20 февраля 2011

Спасибо за вышеупомянутые ответы.

Я, кроме всего прочего, забыл, что нет никаких основных методов для HTML!

Функционирование отредактированного кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for Linux (vers 6 November 2007), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Examples of Strings</title>

<script type="text/javascript">
//<![CDATA[

         // get a name 


// declarations
var firstVariable =  7;
var secondVariable = 9;



//]]>
</script>
</head>
<body>
<h1>My First Function</h1>
<script type="text/javascript">
//<![CDATA[


function name(firstVariable, secondVariable){

    var result = firstVariable + secondVariable;
    alert(result);
    return result;
}

name(firstVariable, secondVariable);



//]]>
</script>
</body>
</html> 
0 голосов
/ 20 февраля 2011

Валидатор говорит, что ваша разметка в порядке, потому что ваша разметка действительно в порядке. Проблема заключается в тегах <script> (что вам не может проверить валидатор W3C).

Прежде всего удалите комментарии <!-- hide me -->, так как они не нужны и вызывают синтаксическую ошибку в Javascript.

Во-вторых, если вы разрабатываете для браузеров, вы должны использовать ECMAScript 5-е издание, которое не имеет статических типов. Вы не можете использовать int или var int.

В-третьих, вы пропустили вызов функции (по крайней мере, в вашем примере выше).

Ваш код становится:

// declarations
var firstVariable = 7;
var secondVariable = 9;

function name(firstVariable, secondVariable){
    var result = firstVariable + secondVariable;
    alert(result);
    return result;
}

name(firstVariable, secondVariable); // call the function

Да, и кстати, пожалуйста, оставьте учебники, которые учат вас использовать document.write, потому что это очень плохая практика кодирования. Для тестирования и отладки сообщений используйте console.log или alert.

0 голосов
/ 20 февраля 2011

Во-первых, этот валидатор не проверяет javascript, он только проверяет разметку HTML.

Во-вторых, когда у вас есть <!-- hide me, вы должны закомментировать его так же, как вы делаете show me --> следующим образом: // <!-- hide me. Сегодня они не нужны, так что вы все равно можете их спокойно пропустить.

В-третьих, вы переопределяете firstVariable, вы, вероятно, хотели поставить secondVariable во второй раз.

В-четвертых, вы никогда не вызываете функцию, поэтому, возможно, вы захотите поместить name(7, 9); где-нибудь после объявления функции.

Наконец, вам не нужно возвращать результат, если вы его не используете (что в данном случае не используется), и вам не следует использовать document.write(), так как он задерживает рендеринг стр.

<script type="text/javascript">
// <!--
//<![CDATA[

var int firstVariable = 7;
var int secondVariable = 9;

function name(firstVariable, secondVariable){
    int result = firstVariable + secondVariable;
    document.writeln(result);
}

name(firstVariable, secondVariable);

//]]>
// -->
</script>
0 голосов
/ 20 февраля 2011

Это весь ваш код?

Если это так, вы вообще не вызываете функцию!

Если нет, покажите нам, как вызывается функция.

Также вы объявляете переменные как int, в js нет int, просто var в порядке.

0 голосов
/ 20 февраля 2011

Ну, проблема в том, что вы определили функцию, но не выполняли ее вообще.

Попробуйте вызвать функцию следующим образом:

<script>

    var  firstVariable =  7;
    var  secondVariable = 9; // you have a typo

    function name(firstVariable, secondVariable){

        var result = firstVariable + secondVariable;
        document.writeln(result);
        return result;
    }

    // making the function call
    name(firstVariable, secondVariable);

</script>

Кстати сначала удалите оба <!-- hide me. Если браузер поддерживает javascript, то у вас есть некорректный тег комментария, если вы хотите, чтобы hide me, затем закройте его правильно, как это <!-- hide me -->.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...