2012-01-12 2 views
2

Итак, идея такова. У меня есть массив в js-файле, а также функция, которая ссылается на случайный элемент из этого массива. Я хочу, чтобы иметь возможность щелкнуть кнопку, и текст в диапазоне изменяется на случайный элемент в массиве. У меня уже есть способ сделать это. У меня есть пробел с идентификатором «change_equivalently». Затем в файле JavaScript, у меня естьКак вы относитесь к функции javascript непосредственно в html?

var Equivalentlys = [ 
"Equivalently, ", 
"Alternatively, ", 
"Another way of saying this is that " 
]; 

$('#shuffle').click(function() { 
    var length = (Equivalentlys.length + 1); 

    var x = Math.floor(Math.random()*length); 

function Equivalently(i){ 
    return Equivalentlys[i]; 
}; 

$('#change_equivalently').text(Equivalently(x)); 

}); 

Мой вопрос заключается в том, что когда я пишу из HTML-код, я всегда должен написать

<span id = "change_equivalently"> ... </span> 

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

Но я хочу более простой способ. я пытался что-то вроде

<var> Equivalently(1) </var> 

, чтобы увидеть, если я мог бы сослаться на яваскрипт функцию, но это не сработало.

Как я могу приблизиться к этому?

ответ

3

Прежде всего, подход, который вы используете сейчас, - лучше, чем вы хотите - он отделяет представление от функции и широко считается лучшей практикой.

Однако, вы можете (но, как я уже сказал, вероятно, не должен) включать код, который будет вызываться, когда ваш элемент щелкнул:

<span onclick="doStuff()"> blarg </span> 

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

В конечном счете, наилучшим способом является использование диапазона для маркировки содержимого и добавления события клика в ваш скрипт, как вы это делаете прямо сейчас. Это лучше всего семантически: в html все, что вы говорите, это то, что конкретное слово/позиция изменчиво; вы указываете , как изменяется в вашем коде.

+0

Конечно 'document.write' (http://javascript.about.com/library/blwrite.htm) позволит вам иметь Javascript, который превращается в HTML как PHP? Хотя +1 за то, что вы не должны делать это так или иначе. :) – Chris

+1

[Почему document.write считается «плохой практикой»?] (Http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice) –

+0

А, ок. Ну, я не знаю php, поэтому я просто буду придерживаться того, что я сделал изначально. Просто будет боль, чтобы продолжать размещать пролеты повсюду с его идентификатором. Но я думаю, это не так уж плохо. –

1

Вы имеете в виду это?

<script type="text/javascript"> 
    Equivalently(1) 
</script> 
+0

Не хотите ли вы там 'document.write'? – Chris

+0

Я пробовал это в html, но это не сработало. –

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