Javascript.RU

ТРИЗ-скрипт расчета идеальности технической системы

Развитие технической системы (ТС) определяется по повышению ее степени идеальности в направлениях увеличения качества функционирования и снижения фактора расплаты. Повышение идеальности достигается как за
счет совершенствования существующих конструкций, так и за счет радикальных изменений конструкций, создания принципиально новых.
На практике я пользуюсь экспертной оценкой идеальности как отношение функциональной значимости (ФЗ) к затратной значимости (ЗЗ). Значимость системы оценивается как сумма значимостей составляющих ее элементов. А
значимость каждого элемента – по 10-бальной шкале. Еще в знаменатель добавил проблемную значимость (ПЗ), т.к., по моему мнению, проблемы – это тоже затраты. Еще каждую значимость умножил на весовой коэффициент. Формула имеет такой вид:
И = К1∑ФЗ/(К2∑ПЗ+К3∑ЗЗ)
Чтобы получить значение коэффициента идеальности, сначала заполняется таблица скрипта. В левый крайний список вводятся названия компонентов ТС. При вводе каждого компонента в правые списки значимостей вводятся нули.
После ввода всех компонентов списки значимостей редактируются. Для этого изменяемый элемент списка выделяется, а в верхнее текстовое поле вводится число (от 0 до 10). После нажатия клавиши "Ред" число заносится в список.
В этой таблице приведены значимости каждого элемента системы по 10 бальной экспертной оценке. Коэффициенты Кфз, Кпз, Кзз - это весовые коэффициенты. Они подбираются экспериментально. Ввод их производится в текстовые
поля, расположенные снизу под коэффициентами. После заполнения списков и ввода значений коэффициентов нажимается клавиша "Идеальность" и в правом текстовом поле выводится ее значение. Списки сохраняются в
cookies: Cuk,Cuk2,Cuk3,Cuk4. Для этого нужно нажать клавишу "Запись в "cookie". Данный расчет позволяет количественно выявлять проблемные элементы, а также оценивать новое техническое решение. Естественно,
идеальность новой системы должна получаться выше, чем у прототипа.
Приближение к идеальному конечному результату должно идти с последовательным увеличением идеальности.
Скрипт составлялся в Firefox.

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

<HTML>
<HEAD>
<TITLE>ТРИЗ-скрипт расчета идеальности технической системы</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
function focusElement(n) {
var elem = document.forms[n].myInput;
elem.focus();
}
function SetCookie (name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" +
    expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}

// Вспомогательная функция, используемая функцией getCookie()
function getCookieVal (offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
      endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

//Основная функция для определения значения cookie по имени
function GetCookie (name, value) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
      i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0)
      break;
}
    return null;
}

function DelCuk() {
    var largeExpDate = new Date ();
    largeExpDate.setTime(largeExpDate.getTime());
	SetCookie('Cuk',Cuk,largeExpDate,myDomain);
	SetCookie('Cuk2',Cuk2,largeExpDate,myDomain);
	SetCookie('Cuk3',Cuk3,largeExpDate,myDomain);
	SetCookie('Cuk4',Cuk4,largeExpDate,myDomain)
    document.write('<p align=center>' + "cookie ТС удалена" + '</p>');
}

//Запись списка в cookie
function AddCk() {
    for (var n=0; n < 4; n++){
        var list = document.forms[n].getElementsByTagName('select')['list']; 
		var li = document.forms[n].getElementsByTagName('option'); 
		//Ввод всего списка с разделением элементов пробелами
		var s = ""
		for (var i=0; i < li.length; i++){s = s + (list.options[i].value)+' '}
		//Удаление пробела в конце списка
		s = s.slice(0,-1); 
		if (n==0){SetCookie('Cuk',s,largeExpDate,myDomain)}else{
		if (n==1){SetCookie('Cuk2',s,largeExpDate,myDomain)}else{
		if (n==2){SetCookie('Cuk3',s,largeExpDate,myDomain)}else{
		if (n==3){SetCookie('Cuk4',s,largeExpDate,myDomain)}}}}
		alert("Запись успешно произведена");
}  }
//Заполнение списка
function addList(n){
valid = true;
var list = document.forms[n].getElementsByTagName('select')['list']; 
var option = document.createElement('option'); 
//Запрещение ввода пустой строки
if (document.fm1.myInput.value<1)
return valid;
// Ввод в список из текстового поля
if (n==0){option.innerHTML =document.forms[n].myInput.value}
else {option.innerHTML ='0'}
document.forms[n].list.appendChild(option)
document.forms[0].myInput.focus()
}
//Ввод массивов в списки
function addArr(){
    {for (var i=0; i < arr.length; 
    i++){{var li=document.createElement('option');
    document.fm1.list.appendChild(li);
    li.innerHTML =arr[i]}
    {var li=document.createElement('option');
    document.fm2.list.appendChild(li);
    li.innerHTML =arr2[i]}
    {var li=document.createElement('option');
    document.fm3.list.appendChild(li);
    li.innerHTML =arr3[i]}
    {var li=document.createElement('option');
    document.fm4.list.appendChild(li);
    li.innerHTML =arr4[i]}
    }}
}

function Id(KF,KP,KZ){
var s = new Array(3)
for (var n=1; n < 4; n++){
    var list = document.forms[n].getElementsByTagName('select')['list']; 
	var li = document.forms[n].getElementsByTagName('option'); 
	s[n]=0;
	for (var i=0; i < arr.length; 
    i++){s1=parseFloat(list.options[i].value); s[n] = s[n] + s1}}
var K1F=parseFloat(KF);
var K1P=parseFloat(KP);
var K1Z=parseFloat(KZ);
var Id1=K1F*s[1]/(K1P*s[2]+K1Z*s[3])
document.fm7.Ids.value=Id1.toFixed(3)
}
function Sum(){
var s = new Array(3)
for (var n=1; n < 4; n++){
    var list = document.forms[n].getElementsByTagName('select')['list']; 
	var li = document.forms[n].getElementsByTagName('option'); 
	s[n]=0;
	for (var i=0; i < arr.length; 
    i++){var s1=parseFloat(list.options[i].value); s[n] = s[n] + s1}}
document.fm5.SFZ.value=s[1]
document.fm5.SPZ.value=s[2]
document.fm5.SZZ.value=s[3]
}


var Cuk = GetCookie('Cuk')
var Cuk2 = GetCookie('Cuk2')
var Cuk3=GetCookie('Cuk3')
var Cuk4=GetCookie('Cuk4')
pathname = location.pathname;
myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/';
// Установка параметра expire на год вперед.
var largeExpDate = new Date ();
largeExpDate.setTime(largeExpDate.getTime() + (365 * 24 * 3600 * 1000));
var arr = Cuk.split(' ')  // массив из Cuk; разделитель - пробел
var arr2 = Cuk2.split(' ')
var arr3 = Cuk3.split(' ')
var arr4 = Cuk4.split(' ')
</script>
</HEAD>

<BODY onload="addArr()">
<table   align="center"  name = "tb"  cellspacing="0"  align ="left" ><tbody> 
<tr>
    <td  align="center" width="220px" bgcolor="#ffffcc" id="first">
        <center><form name="fm1">
        <input type='button' value='Добавить элемент в список'
        onclick='for(var j=0;j<4;j++)addList(j)'><br />
        <input type=button value='Удалить элемент из списка' 
        onClick="for(var i=0;i<fm1.list.length;i++)
        if(fm1.list.options[i].selected==true) 
        for(var j=0;j<4;j++)forms[j].list.options[i]= null"><br /> 
        <input type=button value='Редактирование' 
        onClick="for(var i=0;i<fm1.list.length;i++)
        if(fm1.list.options[i].selected==true) 
        fm1.list.options[i].innerHTML=fm1.myInput.value;fm1.myInput.value='' "><br />
        <b>Элементы</b><br />
        <input type="text" name="myInput"><br />
		<select  size='15' id="list" ></select><br />
        </form></center>
    </td>
    <td align="center" width="25px" bgcolor="#ccffff" id="second">
        <form name="fm2">
        
        <input type=button value='Ред' 
        onClick="for(var i=0;i<fm2.list.length;i++)
        if(fm2.list.options[i].selected==true) 
        fm2.list.options[i].innerHTML=fm2.myInput.value;fm2.myInput.value=''" style="margin-top: 45px"><br />
        <b>ФЗ</b><br />
        <input type="text" size="3px" name="myInput"><br />
        <select size='15'  id="list" ></select><br />

        </form>
    </td>
    <td align="center" width="25px" bgcolor="#ccffff" id="second">
        <form name="fm3">
        
        <input type=button value='Ред' 
        onClick="for(var i=0;i<fm3.list.length;i++)
        if(fm3.list.options[i].selected==true) 
        fm3.list.options[i].innerHTML=fm3.myInput.value;fm3.myInput.value=''  " style="margin-top: 45px"><br />
        <b>ПЗ</b><br />
        <input type="text" size="3px" name="myInput"><br />
        <select size="15"  id="list"></select><br />

        </form>
    </td>
    <td align="center" width="25px" bgcolor="#ccffff" id="second">
        <form name="fm4">
        
        <input type=button value='Ред' 
        onClick="for(var i=0;i<fm4.list.length;i++)
        if(fm4.list.options[i].selected==true) 
        fm4.list.options[i].innerHTML=fm4.myInput.value;fm4.myInput.value='' " style="margin-top: 45px"><br />
        <b>ЗЗ</b><br />
        <input type="text" size="3px"  name="myInput"><br />
        <select size="15"  id="list" ></select><br />
        </form>
    </td>
</tr>

<tr align="center"><form name="fm5">
    <td bgcolor="#ffcc66">
    
    <INPUT TYPE="button" VALUE="Запись в cookie" OnClick='AddCk()'style="width: 135px"><br />
    <INPUT TYPE="button" VALUE="Удаление cookie" OnClick='DelCuk(Cuk)'style="width: 135px">
    
    </td>
    <td bgcolor="#ffcc66">
    <input type='button' value='Sфз'
        onclick='Sum()'><br />
    <input type="text" size="4px"  name="SFZ">
    </td>
    <td bgcolor="#ffcc66">
    <input type='button' value='Sпз'
        onclick='Sum()'><br />
    <input type="text" size="4px"  name="SPZ">
    </td>
    <td bgcolor="#ffcc66">
    <input type='button' value='Sзз'
        onclick='Sum()'><br />
    <input type="text" size="4px"  name="SZZ">
    </td>
    </form>
</tr>

<tr align="center">
<form name="fm6">
    <td bgcolor="#ffcc66">    
    </td>
    <td bgcolor="#ffcc66">
    K<sub>фз</sub><br />
    <input type="text" size="3px"  name="KF">
    </td>
    <td bgcolor="#ffcc66">
    K<sub>пз</sub><br />
    <input type="text" size="3px"  name="KP">
    </td>
    <td bgcolor="#ffcc66">
    K<sub>зз</sub><br />
    <input type="text" size="3px"  name="KZ">
    </td>
    </form>
</tr>

<tr>
<form name="fm7">
    <td colspan="4" bgcolor="#ffcc66">
        <INPUT TYPE="button" VALUE="Идеальность" OnClick='Id(document.fm6.KF.value,document.fm6.KP.value,document.fm6.KZ.value)'> = K<sub>фз</sub>*S<sub>фз</sub>/(K<sub>пз</sub>*S<sub>пз</sub>+K<sub>зз</sub>*S<sub>зз</sub>) = 
        <input type="text" name="Ids" style="width: 45px">
    </td>
    </form>
</tr>
</tbody></table>
<script type="text/javascript">
focusElement(1)
</script> 
</BODY>
</HTML>
-1

Автор: I-zone, дата: 11 января, 2011 - 18:20
#permalink

1) higth - Оригинально. Букву пропустили.

#list{higth: 10px;}

2) Uncaught exception: TypeError: Cannot convert 'Cuk2' to object

3) Uncaught exception: TypeError: Cannot convert 'arr2' to object

И тому подобное...

Панель в Firefox: Инструменты -> Консоль ошибок


Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 00:05
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 13:36
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
6 + 14 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Другие записи этого автора
invem
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние комментарии
Последние темы на форуме
Forum