Справочник по CSS : Тематический указатель : Методы : setExpression
Материал из Справочник Web-языков
Разработка и внедрение CRM-систем | |||||||
|
Содержание |
Метод setExpression
С помощью этого метода задают выражение для нужного свойства.
Синтаксис
object.setExpression(sPropertyName, sExpression [, sLanguage]) |
Используемые значения
sPropertyName | Обязательная часть. Строковое значение, которое задает имя свойства, для которого нужно задать выражение. | |
sExpression | Обязательная часть. Строковое значение, которое задает само выражение, написанное на одном из языков (JScript, JavaScript, VBSCript). Должно быть без комментариев и точек с запятыми. Строка может содержать ссылки на другие свойства, находящиеся на этой странице. | |
sLanguage | Необязательная часть. Строковое значение, определяющее одно из возможных значений:
|
Возвращаемое значение
У свойства нет возвращаемого значения.
Замечания
С помощью метода setExpression можно добавлять выражения для CSS атрибутов и DHTML свойств. Чтобы удалить выражение, заданное с помощью метода setExpression используйте метод removeExpression.
Ниже представлены фрагменты кода, с помощью которых можно задать выражения для различных CSS и DHTML свойств.
- Этот код нужен для получения выражения для считываемого/записываемого свойства или свойства expando:
object.setExpression(sPropertyName, sExpression, sLanguage)
- Этот код нужен для получения выражения для CSS атрибута:
object.style.setExpression(sPropertyName, sExpression, sLanguage)
- Используйте синтаксис expression(), чтобы задать выражение для CSS атрибута в HTML:
<ELEMENT STYLE="sAttributeName:expression(sExpression)">
Тип данных вычисляемого выражения в параметре sLanguage должен удовлетворять одному из возможных значений параметра sExpression.
Используйте свойство объекта uniqueID в выражении, чтобы ссылаться на объект. Использование uniqueID - это альтернатива использования идентификатора id для ссылки на объект.
Не используйте свойство cssText с любыми динамическими методами свойств.
Следующие фрагменты кода иллюстрируют различные проблемы, возникающие при несовпадении типов:
- Значение sExpression недопустимое, т.к. значением document.style.fontSize является npx, и к нему нельзя добавить 13.
object.style.setExpression("height","document.style.fontSize + 13");
- Значение sExpression недопустимое, т.к. первоначально значение для document.body.style.fontSize не задано.
object.style.setExpression("width","document.body.style.fontSize");
Примеры
В примерах показывается как использовать метод setExpression для изменения ширины синего блока. В каждом примере ширина синего блока равна сумме значений для ширины двух первых текстовых блоков. Когда изменяется ширина одного из первых блоков, ширина синего блока вычисляется заново. В первом примере показана реализация метода setExpression в HTML.
<INPUT TYPE=text ID=oBox1 value=40>Сумма значений для ширины этих двух текстовых блоков будет шириной <BR> <INPUT TYPE=text ID=oBox2 value=40>синего блока, находящегося ниже. <BR><INPUT TYPE=text ID=oBox3 STYLE="width:expression(eval(oBox1.value) + eval(oBox2.value));background-color:blue"> <BR><INPUT TYPE=button ID=Button value="Кликните для перерасчета ширины синего блока" onclick="recalc()">
Во втором примере используется метод setExpression и свойство uniqueID, чтобы обновить свойство innerText в строке таблицы.
<SCRIPT> window.onload=fnInit; function fnInit(){ var iLen=oSheet.rows.length-1; for(var i=1;i<iLen;i++){ var oRow=oSheet.rows[i]; var oCells=oRow.cells; oCells(3).setExpression("innerText", "fnGetValue(" + oRow.uniqueID + ")"); } var oGrand=oSheet.rows(iLen).cells(1); oGrand.setExpression("innerText","fnGetTotal()"); } function fnGetTotal(){ var iValue=0; var iLen=oSheet.rows.length-1; for(var i=1;i<iLen;i++){ iValue+=parseFloat(oSheet.rows(i).cells(3).innerText); } return iValue; } function fnGetValue(oRow){ var oCells=oRow.cells; var oPrice=oCells(2); var oQuantity=oCells(1); var sPrice; var sQuantity; if(oPrice.childNodes[0].nodeName=="#text"){ sPrice=oPrice.innerText; } else{ var vPrice=oPrice.childNodes[0].value; sPrice=(vPrice==""?"0":vPrice); } if(oQuantity.childNodes[0].nodeName=="#text"){ sQuantity=oQuantity.innerText; } else{ var vQuantity=oQuantity.childNodes[0].value; sQuantity=(vQuantity==""?"0":vQuantity); } var vAlg1=parseFloat(sPrice) * parseFloat(sQuantity); return vAlg1; } </SCRIPT> <TABLE ID="oSheet"> <TR><TH>Продукт</TH><TH>Количество</TH> <TH>Цена за единицу</TH><TH>Итого</TH></TR> <TR><TD>Browser Putty</TD><TD EDIT="true">2</TD> <TD EDIT="true">4.99</TD><TD></TD></TR> <TR><TH COLSPAN=3>Конечное количество</TH><TH></TH></TR> </TABLE>
Смотрите также
getExpression, removeExpression
Ссылки на источники
https://msdn.microsoft.com/en-us/library/ms531196(VS.85).aspx