Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.08.2015, 11:41
Интересующийся
Отправить личное сообщение для Алина7 Посмотреть профиль Найти все сообщения от Алина7
 
Регистрация: 23.08.2015
Сообщений: 13

Помогите скорректировать скрипт
Есть такой скрипт
<div>
	<form name="menufrm">
		<select name="menu1">
			<option value="">Категория 1</option>
			<option value="a1">a1</option>
			<option value="a2">a2</option>
			<option value="a3">a3</option>
			<option value="a4">a4</option>
		</select> 
		<select name="menu2">
			<option value="">Категория 2</option>
			<option value="b1">b1</option>
			<option value="b2">b2</option>
			<option value="b3">b3</option>
			<option value="b4">b4</option>
		</select> 
		<input type="button" value="Перейти" onclick="combineMenus(this.form, this.form.menu1, this.form.menu2)" />
	</form></div> 
<script language="JavaScript">
//<![CDATA[
<!-- Original: Ronnie T. Moore, Editor -->
<!-- Idea by: Selvi Narayanan -->
 
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! [url]http://javascript.internet.com[/url] -->
 
<!-- Begin
site = "сайт"; // не добавляйте в конце"/" !!!!!
function combineMenus(frm, menu1, menu2) {
with (frm) {
str = menu1.options[menu1.selectedIndex].value;
str += menu2.options[menu2.selectedIndex].value;
url = site + "/" + str + ".html"; 
window.location.href = url;
}
}
// End -->
//]]>
</script>

Надо к нему прикрутить еще 2 категории (2 меню). И сделать вывод общего результата не в отдельную страницу html, а на этой же странице, чтобы внизу появлялся нужный текст.
Я вижу проблему в строчках:
str = menu1.options[menu1.selectedIndex].value;
str += menu2.options[menu2.selectedIndex].value;
url = site + "/" + str + ".html"; 
window.location.href = url;

Надо, конечно, добавить 2 меню.
В последнем куске добавить 2 строчки с str для 3 и 4 меню и как-то изменить 2 последние строчки. Вот с ними у меня не получается.

Последний раз редактировалось Алина7, 25.08.2015 в 12:00.
Ответить с цитированием
  #2 (permalink)  
Старый 25.08.2015, 13:33
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ГГ</title>

<style>
*{
    margin:0;
    padding:0;
    outline: 0;
}
.choice {
    width: 100%;
}


input {
    height: 100px;
}

h1 {
    display: inline-block;
}

.result {
    color: red;
    display: inline-block;
}
</style>
</head>
<body>
<div>
    <form name="menufrm">
      <div class="choice">
        <select name="menu1">
            <option value="">Категория 1</option>
            <option value="a1">a1</option>
            <option value="a2">a2</option>
            <option value="a3">a3</option>
            <option value="a4">a4</option>
        </select>
        <select name="menu2">
            <option value="">Категория 2</option>
            <option value="b1">b1</option>
            <option value="b2">b2</option>
            <option value="b3">b3</option>
            <option value="b4">b4</option>
        </select>
        <select name="menu3">
            <option value="">Категория 3</option>
            <option value="c1">c1</option>
            <option value="c2">c2</option>
            <option value="c3">c3</option>
            <option value="c4">c4</option>
        </select>
        <select name="menu4">
            <option value="">Категория 4</option>
            <option value="d1">d1</option>
            <option value="d2">d2</option>
            <option value="d3">d3</option>
            <option value="d4">d4</option>
        </select>
        <input type="button" value="Перейти" onclick="combineMenus(this.form, this.form.menu1, this.form.menu2,this.form.menu3,this.form.menu4)" />
      </div>
        <h1>Результат:</h1>
        <h2 class="result"></h2>
    </form></div>
<script language="JavaScript">
//<![CDATA[
<!-- Original: Ronnie T. Moore, Editor -->
<!-- Idea by: Selvi Narayanan -->
  
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! [url]http://javascript.internet.com[/url] -->
  
<!-- Begin

function combineMenus(frm, menu1, menu2, menu3, menu4) {
with (frm) {
str = menu1.options[menu1.selectedIndex].value+" ";
str += menu2.options[menu2.selectedIndex].value+" ";
str += menu3.options[menu3.selectedIndex].value+" ";
str += menu4.options[menu4.selectedIndex].value+" ";
document.querySelector('.result').innerHTML = str;
}
}
// End -->
//]]>
</script>

</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 25.08.2015, 13:45
Интересующийся
Отправить личное сообщение для Алина7 Посмотреть профиль Найти все сообщения от Алина7
 
Регистрация: 23.08.2015
Сообщений: 13

Огромное спасибо!
Только в результате должен появляться не такой текст,как написано в option, например a2 b3 c1 d4, а определенный текст, соответствующий этим параметрам.
Например, если выберут a2 b3 c1 d4, то текст появится: Привет!
Если выберут a1 b4 c1 d2, то Прощай!
Это условно, на самом деле там будут фреймы.
Может быть какие-то идентификаторы поставить, чтобы переводили куда надо, например к какой-то таблице с идентификатором a2 b3 c1 d4, и в ней будут нужные фреймы.
Еще раз спасибо
Наверное это совсем элементарно, извините, если что не так. Но у меня не получается.

Последний раз редактировалось Алина7, 25.08.2015 в 13:58.
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2015, 17:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

В данном случае with не к чему, как и не нужно menu1.options[menu1.selectedIndex].value, ибо свойство value списка и возвращает значение выбранной его опции. Как и не стоит передавать аргументами весь набор списков формы, иначе при добавлении еще списков придется все время править код. Лучше так:

... onclick="combineMenus(this.form)" //то есть передаем в функцию только форму
//а в функции
function combineMenus(f) {
    var n = f.querySelectorAll('select'), r = f.querySelector('.result'), i, s = '';
    for(i=0; i < n.length; i++) {
       s += n[i].value + '<br>'
    }
    r.innerHTML = s
}


А вот нужно ли выводить эти значения, или нет, идентификаторы чего либо должны быть в значениях опций, это скорее вопрос к вам. Если судить по значению кнопки "Перейти", то возможно значениями должны быть url соответствующие, и если так, не понятно тогда зачем функция, можно просто выбрав в списке нужное и перейти. Если же предварительно нужно вывести нечто, ну так это можно сделать и иначе, и также без функции.
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2015, 18:01
Интересующийся
Отправить личное сообщение для Алина7 Посмотреть профиль Найти все сообщения от Алина7
 
Регистрация: 23.08.2015
Сообщений: 13

Проблема решена с помощью rekzi
Оперативно и грамотно. Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите поправить скрипт меню stsepelin Элементы интерфейса 2 30.01.2014 15:11
Помогите доработать скрипт Joannes Общие вопросы Javascript 0 08.09.2013 21:21
Помогите вставить скрипт на страницу alexsio Работа 7 22.04.2013 18:19
Скрипт if помогите пЕньку NeverLux Общие вопросы Javascript 1 06.01.2011 14:33
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05