Phoenix,
Можно сделать так:
<script type='text/javascript'>
var n=Math.floor(Math.random() * 3) + 1;
var s="<script type='text/javascript' src='"+n+".js'><"+"/scr"+"ipt>";
document.write(s);
</script>
Но этот вариант неправильный, с точки зрения постановки задачи нам нужно получать куски html кода из файлов, а в вашем варианте файлы должны быть правильным JavaScript.
lesik,
Самым оптимальным решением вашей задачи будет использование серверных скриптов, написанных, например, на PHP. Там эта задача решается тривиально. Тем не менее, если вам принципиально использовать JavaScript, то вы можете использовать AJAX, для загрузки произвольного содержания и его отображения на странице. Но в таком случае нужно знать точное количество вариантов таких файлов.
Для этого решения вам нужно будет использовать какую-нибудь простую обертку объекта XMLHttpRequest, например такую:
var ajaxRequest = function() {
var xhrObject = null;
var callback = null;
var params = null;
if(typeof XMLHttpRequest != "undefined") {
xhrObject = new XMLHttpRequest();
} else {
try {
xhrObject = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xhrObject = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return null;
}
}
}
var readyStateHandler = function()
{
if(xhrObject.readyState == 4) {
if(xhrObject.status == 200) {
callback(xhrObject.responseText, params);
}
}
}
return function(file, callbackFunc, callbackParams)
{
if(!file) return false;
if(typeof callbackFunc != "function") return false;
params = callbackParams || null;
callback = callbackFunc;
xhrObject.open("GET", file, true);
xhrObject.onreadystatechange = readyStateHandler;
xhrObject.send(null);
}
}();
Затем вам нужно будет написать обработчик, который сможет работать с этой оберткой, в вашем случае подобный этому:
function addRandomHTML(htmlstr, id)
{
var element = document.getElementById(id);
element.innerHTML = htmlstr;
}
Теперь вы можете подключать файл с сервера, и выдавать результат в обработчик, в который, помимо этого, можно передать еще и параметр (в нашем случае id элемента, в который будет вставлен результат с сервера). Вот простой пример, как это будет выглядеть, если будет 3 варианта файлов:
<script>
// Тут цифра "3" обозначает общее количество файлов:
var filename = (Math.floor(Math.random() * 3) + 1) + ".txt"
</script>
<body onLoad="ajaxRequest(filename, addRandomHTML, 'mydiv');">
<div id="mydiv"></div>
</body>