|
|
|
| Условие такое: если тег <code> содержит в себе параметр lang (<code lang="">) с любым и даже пустым значением, нужно заменить все угловые скобки на их ASCII-значения во всем коде, который расположен между тегами <code lang=""> и </code>.
Помогите, пожалуйста. | |
|
|
|
|
|
|
|
для: Dimox
(04.01.2009 в 14:40)
| | интересная задачка ,
только например IE6 никак нельзя втолковать что пустой атрибут lang может быть вписанным в тег но с пустым значением.
и если извлекать innerHTML тегов code , то никаких угловых скобок там не будет, будет <>
<html>
<head>
<script language="javascript">
function code_r(){ //
var txt;
var x = document.getElementsByTagName('CODE');
for (var i=0; i< x.length; i++) {
if (x[i].attributes.lang && x[i].attributes.lang.value != "") {
txt = x[i].innerHTML.replace(/</g, '<').replace(/>/g, '>').replace(/[<>]/g, function(c){
return c.charCodeAt();
} );
x[i].innerHTML = txt;
}
}
}
</script>
</head>
<body onload="code_r()">
<code lang="ru" style="border:solid 2px red">
<<<<<<<<<<<<,>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..
</code>
<code style="border:solid 2px green">
<<<<<<<<<<<<
</code>
<br><br><br><br><br><br>
</body></html>
|
| |
|
|
|
|
|
|
|
для: xx77
(05.01.2009 в 00:50)
| | Похоже, что я неправильно изложил суть задачи. Попробую по-другому.
Имеется переменная, допустим, comment, которая содержит в себе вот такой код:
<code>здесь <strong>какой-то</strong> код</code>
<code lang="">здесь <strong>какой-то</strong> код</code>
|
Нужно в содержимом нашей переменной comment сделать замену в соответствии с условием, которое я написал в первом посте.
Уточнение: угловые скобки нужно заменить не на ASCII-код, а на HTML-символы, т.е. < и >. | |
|
|
|
|
|
|
|
для: Dimox
(06.01.2009 в 19:37)
| | Оказалось и правда выражения в javascript намного продвинутее , чем я где-то здесь написал в одном из постов :)
<html>
<head>
<script language="javascript">
S = '<code style="border:solid 2px red" lang="">\n>>><<<<,>>>>\n>>>>>..\n</code>\n<code lang="">\n>>..\n</code>\n<code style="border:solid 2px green">>><<<>>>..\n</code><<>'
O = S.replace(/(<code[^>]*?\s+lang=[^>]*>)((?:[^<]*(?!<\/code).)*)/img, function(s0, s1, s2){
alert(s0);
alert(s1);
alert(s2);
return s1 + s2.replace(/</g, "<").replace(/>/g, ">"); });
alert(O)
</script>
</head>
<body>
<br><br><br><br><br><br>
</body></html>
|
Не понял только как сделать чтобы точка совпадала с переносами строк тоже
, и всётаки модификатора /e не помешало бы | |
|
|
|
|
|
|
|
для: xx77
(07.01.2009 в 00:51)
| | Большое спасибо! Это то, что нужно. | |
|
|
|