Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   присвоение переменной математического знака (https://javascript.ru/forum/misc/12390-prisvoenie-peremennojj-matematicheskogo-znaka.html)

z700i 15.10.2010 15:15

присвоение переменной математического знака
 
Можно ли присвоить переменной математический знак и чтобы он был не string

Задача:
При выборе select'а переменной присваивался соответствующий знак
И чтобы в alert'е выводил ответ:
если выбран + то 12
если - то 8
если * то 20
если / то 5

function proverka() {
        a1 = document.form1.a1.value;
        a2 = 10 + a1 + 2; 
        alert('результат - ' + a2);

<form name="form1">
    <select name="a1">
    <option value="+"> + </option>
    <option value="-"> - </option>
    <option value="*"> x </option>
    <option value="/"> : </option>
    </select>
    <br><br>
    <input type="button" onclick="proverka()" value="Проверить">
</form>

B@rmaley.e><e 15.10.2010 15:41

Цитата:

Сообщение от z700i
Можно ли присвоить переменной математический знак и чтобы он был не string

Чтобы написав что-то вроде
op = +;
a2 = 10 op a1 op 2;
получить правильный ответ - нельзя. Это вообще бред. Но можно записывать в строку, а строку интерпретировать как выражение.
op = '+';
a1 = 5;
expr = 10 + op + a1 + op + 2;
alert(eval(expr))

exec 15.10.2010 15:42

<select onchange="myFunc(this.value);" …


function myFunc( val ) {
	switch ( val ) {
		case "+":
			действия;
			break;
		case "-":
			действия;
			break;
		// и т.д.
	}
}

Semen 17.10.2010 11:31

У меня похожий вопрос: необходимо динамически менять знаки < > в зависимости от выбранного в списке параметра.
Т.е. есть скрипт решения, он одинаковый для всего списка, однако, условие при котором этот скрипт выполняется разлиные, в одном случае j<0 а в другом j>0.
Т.е. достаточно сменить знак сравнения для конкретного элемента в списке... (разветвление делать и писать один и тоже скрипт для расчета два раза не хочется) может можно как то присвоить переменной знак сравнения и потом использовать в выражении? Или как то по другому решить эту задачу, чтоб не писать два раза одни и теже расчеты?

вопрос решен: создал отдельный массив, в котором разместил отрицательные и положительные единицы соответственно конкретному веществу, а потом просто умножаю j на соответствующий элемент массива непосредственно в выражении сравнения

z700i 27.10.2010 08:28

<script language="JavaScript">
    function menu(){
        var a = '<a href="Ссылка">Главная</a>';
        var menu = document.getElementById('menu');
        menu.innerHTML = a;
    }
</script>

<div id="menu" onload="menu()"></div>

Пчему не работает? Всё вроде правильно...

ksa 27.10.2010 09:02

z700i, как вариант...

<!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>
<style>
</style>
<script language="JavaScript">
function menu(){
	var a = document.createElement('a')
	a.href='#'
	a.innerHTML='Главная'
	var menu = document.getElementById('menu')
	menu.appendChild(a)
}
</script>
</head>
<body onload="menu()">
<div id="menu"></div>
</body>
</html>

ksa 27.10.2010 09:03

А твой вариант даже так не сработает...

<div id="menu" onload="alert(1)"></div>

z700i 13.09.2011 16:20

ksa, а js можно как нибудь так?

document.getElementById('menu').onload=myScript();

dmitriymar 13.09.2011 18:08

Цитата:

Сообщение от z700i
а js можно как нибудь так?

document.getElementById('menu').onload=myScript();

событие onload есть у документа,у скриптов и у изображений ,фреймов и объектов тех ,что в теге <object>,но не у контейнеров

Aetae 13.09.2011 18:15

Но можно в сам div запихнуть script и тогда он исполнится в момент появления в dom.
Или моно тупо с момента загрузки отслеживать появление нужного элемента.
Хотя всё равно непонятно зачем.


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