Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не знаю как сделать. Заранее спасибо. (https://javascript.ru/forum/css-html/77452-ne-znayu-kak-sdelat-zaranee-spasibo.html)

Иванasd2 07.05.2019 11:00

Не знаю как сделать. Заранее спасибо.
 
как сделать так что бы это работало?)
есть settings это object
settings['out'] -> dom element
settings['innerType'] -> может быть innerHTML или же innerText
settings['replace'] -> true или false
хочу сделать без множества if и else
settings['out'].settings['innerType']+(settings['replace']==true? '=': '+=')+ text
может как то через eval запустить.

ksa 07.05.2019 12:36

Цитата:

Сообщение от Иванasd2
хочу сделать без множества if и else
settings['out'].settings['innerType']+(settings['replace']==true? '=': '+=')+ text

Так тут и нет условных операторов... :no:

Иванasd2 07.05.2019 13:35

Так я пытаюсь от них избавиться. раньше было так
if(settings['innerType'] == 'innerHTML') {
    if(settings['replace'] == true) {
        settings['out'].innerHTML = text;
    } else {
        settings['out'].innerHTML += text;
    }
} else {
    if(settings['replace'] == true) {
        settings['out'].innerText = text;
    } else {
        settings['out'].innerText += text;
    }
}

ksa 07.05.2019 15:32

Цитата:

Сообщение от Иванasd2
settings['replace'] == true

Это масло масляное...
Заменяется на
settings['replace']

ksa 07.05.2019 15:34

Цитата:

Сообщение от Иванasd2
settings['innerType'] == 'innerHTML'

Это условие вообще не понятно... :no:
Поскольку действия в разных случаях выполняются одни и те же.

Иванasd2 07.05.2019 15:41

Цитата:

Сообщение от ksa (Сообщение 507485)
Это условие вообще не понятно... :no:
Поскольку действия в разных случаях выполняются одни и те же.

Цитата:

Поскольку действия в разных случаях выполняются одни и те же.
как же одни и те же в первом блоке
innerHTML
а во втором
innerText

ksa 07.05.2019 15:43

Цитата:

Сообщение от Иванasd2 (Сообщение 507477)
раньше было так
if(settings['innerType'] == 'innerHTML') {
    if(settings['replace'] == true) {
        settings['out'].innerHTML = text;
    } else {
        settings['out'].innerHTML += text;
    }
} else {
    if(settings['replace'] == true) {
        settings['out'].innerText = text;
    } else {
        settings['out'].innerText += text;
    }
}

Можно заменить на такой вариант...

var typ=(settings['innerType'] == 'innerHTML')? 'innerHTML': 'innerText';
if (settings['replace']) {
	settings['out'][typ] = '';
}
settings['out'][typ] += text;

Или вообще на такое, если settings['innerType'] имеет правильные значения - innerHTML или innerText...
var typ=settings['innerType'];
if (settings['replace']) {
	settings['out'][typ] = '';
}
settings['out'][typ] += text;

ksa 07.05.2019 15:44

Цитата:

Сообщение от Иванasd2 (Сообщение 507487)
как же одни и те же в первом блоке
innerHTML
а во втором
innerText

Ага, заметил но позже. :-?
Смотри вариант выше...

Иванasd2 07.05.2019 15:52

спасибо. ну раз дальше сократить не как то нужно тему закрывать

Иванasd2 07.05.2019 15:53

собственно как это сделать


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