|
|
|
| В РНР корректная генерация кода требует обязательного использования кавычек при задании свойств элементов:
echo "<input type='text' value='100' />";
|
Есть ли такое же требование в Java Script или это необязательно?
Спасибо. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 09:15)
| | вообще то наоборот :)
echo '<input type="text" value="100" />';
|
| |
|
|
|
|
|
|
|
для: deimand
(07.09.2010 в 10:01)
| | Это где такое написано??? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 10:46)
| | А по теме - не очень понятно чего вы хотите. php все равно, что вы ему укажите генерировать, как собственно и яваскрипту. | |
|
|
|
|
|
|
|
для: deimand
(07.09.2010 в 11:01)
| | РНР всё-равно, да вот только при незаключении свойств в кавычки и включении переменных возникают ошибки при работе интерпретатора РНР. Вот я и хочу знать, могут ли возникнуть подобные ошибки в ява-скрипт? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 11:08)
| | В приведенном вами примере ничего подобного не происходит. Может покажете пример, где возникают ошибки? | |
|
|
|
|
|
|
|
для: deimand
(07.09.2010 в 11:11)
| | В данный момент не покажу, не помню точно, но помню, что сталкивался с этим не раз. Да и на форуме РНР темы по этой проблеме видел неоднократно. Кажется, при динамической генерации кода с использованием $_GET - переменных.
А приведенный код действительно проблем не даст, т.к. он очень простой и не имеет переменных. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 11:08)
| | echo "<input type='text' value='100' />" - в этой строке нет РНР-переменных и проблем никаких для него не будет. | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 11:40)
| | Да знаю что не будет. Будут проблемы при работе с переменными, если не заключать свойства в кавычки. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 11:45)
| | А какое отношение РНР $varname = "string" имеет к HTML <input varname=string, где вы можете вообще не указать кавычек? | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 11:54)
| | Вопрос сводится вот к чему: в ява-скрипт тоже можно включать переменные в генерацию html -кода. Требуется ли и там также явно заключать свойства тегов в кавычки, как и в РНР? Или на это можно не обращать внимания? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 12:02)
| | Ну это смотря что имеется ввиду, если имя тега, то html не ругнется, если вы опустите кавычки, но если вы подставляете строковое значение в объявляемую js-переменную или строковый аргумент функции, то отсутствие кавычек в этом случае будет ошибкой:
<script>
var s = "<?php echo $var; ?>";
//а так неверно
var s = <?php echo $var; ?>;
</script>
|
| |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 12:10)
| | А что вернее, вот это:
var a=100;
document.getElementById('mydiv').innerHTML="<input type='text' value="+a+ "/>";
|
Или это:
var a=100;
document.getElementById('mydiv').innerHTML="<input type=text value="+a+ "/>";
|
? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 12:45)
| | А вы проверьте - будут ли проблемы в исполнении:
<input type="text" name="as1" onclick="alert(this.name)">
<input type=text name=as2 onclick="alert(this.name)">
|
| |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 10:46)
| | принято атрибуты html-тегов заключать в двойные, а код js в одинарные | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 11:14)
| | Если вы будете заключать атрибуты в двойные кавычки, то вы не сможете так просто считывать значения переменных РНР, их придётся выделять из строк. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 11:50)
| | я например вообще никогда не делаю интерполяцию. делаю просто объединение строк. хотя бы потому, что повышается читабельность кода
да и тем более есть еще экранирование | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 12:04)
| | В ява-скрипт экранирования нет, если я не ошибаюсь. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 12:47)
| | если ошибаетесь | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:01)
| | Приведите пример кода с экранированием! | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 13:05)
| |
.. .innerHTML = "<div onclick='javascript:alert( \"aaaa\" );'>
|
| |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:27)
| |
<div onclick="alert('aaaa')">
|
| |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 13:30)
| | это всего лишь пример был. человек не знает что в js есть экранирование. написал ему в его же стиле с одинарными кавычками
p.s да, javascipt там лишнее
такое чувство что он пишет в обычном блокноте. иначе не вставали бы такие вопросы, т.к подсветка реально помогает. и не делал бы интерполяцию скорее всего | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:32)
| | Вообще, с учетом того, что редакторы зачастую по разному подсвечивают строки заключенные в одинарные и двойные кавычки, я предпочитаю обрамлять значения атрибутов двойными кавычками, в этом случае они подсвечивается цветом отличным от имен тегов и самих атрибутов. | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 13:42)
| | а я предпочитаю настраивать подсветку под себя ;) | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:43)
| | Ну да, велика была бы надобность шерстить каждый понравившийся редактор в настройках. Если мне нравится подсветка HomeSite, удобная для меня, то разукрашивать ее еще чем-то, это уже излишество. | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:27)
| | Минуту...
Да не работает ваш код!
Работает только без слэшей внутри алерт и по другому событию, но не по onclick. Во-вторых, такой код в принципе бесполезен. Покажите, как экранировать кавычки, обрамляющие свойство type=text вот здесь:
...innerHTML="<input type='text' />";
|
? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 13:57)
| | Именно здесь ничего не надо экранировать, пока вы не будет это выводить в РНР, например, так:
<?
echo "...innerHTML=<input type=\"text\" />";
|
| |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 14:15)
| | psychomc утверждает, что в ява-скрипт экранирование есть. Пусть покажет рабочий пример. Я пока не вижу. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 14:46)
| | потому что в javascript вы ..уй с горы
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<h1 id="id1">тег</h1>
<script>
document.getElementById('id1').innerHTML = "<div onclick='alert(\"aaaa\");'>кликни сюда, js-man :)</div>";
</script>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 14:50)
| | --- | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 14:55)
| | работает? | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 14:57)
| | ...уй с горы - это ты. Повторяю, твой пример не работает, теперь покажи экранирование в input type=text | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 15:00)
| | смотри
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<h1 id="id1">тег</h1>
<script>
document.getElementById('id1').innerHTML = "<input type=\"text\" value=\"хватит тупить\"/>";
</script>
</body>
</html>
|
я вот не понимаю, у тебя проблема с браузером или с чем-то другим?
работает под ie6, firefox 3, opera 10 | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 15:06)
| | Вот это вроде заработало. С тебя бутылка... | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 15:40)
| | :)
p.s настоятельно рекомендую какой-нибудь редактор с подсветкой, типа notepad++ , если конечно уже не пользуетесь. | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 15:46)
| | И что он мне даст, этот редактор? | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 15:56)
| | поможет сосредоточить внимание не на кавычках или каких-то других синтаксических ошибках, а на алгоритме. подсветка очень сильно помогает в чтении и написании кода. если бы вы им пользовались, то скорее всего этой темы бы даже не возникло
в общем, попробуете-узнаете | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 09:15)
| | вообще-то, для корректной генерации кода в js используются функции типа createElement( ), а не просто функции вывода | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 11:15)
| | Кем используются? Я их не использую и не вижу необходимости. Такие функции нужны при работе с DOM, а не при генерации html, для чего вполне хватает свойства innerHTML. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 11:20)
| | я считаю что это более грамотный подход, и думаю многие согласятся | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 12:08)
| | Ну это спорный вопрос. С DOM работать сложней, чем с обычной моделью. Зачем тогда городить огород??? Да и разные браузеры могут интерпретировать DOM по-разному, и тут можно наступить на хорошие грабли.:)))
DOM нужно использовать только тогда, когда она действительно нужна, например, при динамической генерации тегов. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 12:51)
| | никогда не встречал таких граблей. | |
|
|
|
|
|
|
|
для: psychomc
(07.09.2010 в 13:02)
| | К примеру, вот здесь:
<node1>a</node1>
<node2>b</node2>
|
разные браузеры интерпретируют пространство между </node1> и <node2> по-разному. | |
|
|
|
|
|
|
|
для: coloboc66
(07.09.2010 в 14:14)
| | если в жс будете выводить так, то он ругнётся
<node1>a</node1>
<node2>b</node2>
|
ибо надо так:)
..innerHTML = "<node1>a</node1>\n<node2>b</node2>";
|
| |
|
|
|
|
автор: ghesh (07.09.2010 в 13:39) |
|
|
для: coloboc66
(07.09.2010 в 09:15)
| | ничего подобного пхп не требует. и яваскрипт тоже не требует.
требует хтмл.
значение аттрибута type внешне никак не влияет на результат, если его не заключить в ковычки.
а с value дела обстоят по-другому: если значение без пробела - все будет ок,
но стоит поставить пробел, его значением станет строка до первого пробела.
поэтому значение аттрибута value нужно обязательно заключать в ковычки. | |
|
|
|