提问人:user178167 提问时间:10/2/2017 最后编辑:Philuser178167 更新时间:10/12/2017 访问量:39
Php 和 Javascript 失败 W3 验证器 XHTML 1.0 过渡
Php and Javascript fails W3 Validator XHTML 1.0 Transitional
问:
我正在使用以下php和javascript
if ($name == "" || $name == $required)
{
echo"<p><span>Name</span></p><input size=\"60\" id=\"name\" name=\"name\" type=\"text\" value=\"$name\" onfocus=\"if (this.value == '$required') {this.value = '';}\" onblur=\"if (this.value == '') this.value=this.defaultValue;\"$name\""
;}
其结果是:
<p><span>Name</span></p><input size="60" id="name" name="name" type="text" value="Required" onfocus="if (this.value == 'Required') {this.value = '';}" onblur="if (this.value == '') this.value=this.defaultValue;"Required" />
但是,w3c 验证器说:
第 60 行,第 220 列:第 60 行,第 220 列:属性值文字只能出现在属性规范列表中,在 VI 分隔符
之后......'';}"onblur=“if (this.value == '') this.value=this.defaultValue;”必需“ />您是否忘记了标记属性与其声明值之间分隔的“等号”?典型的语法是 attribute=“value”。
在同一行中,我还收到其他错误:
错误行 60,第 221 列:省略了“输入”的结束标记,但指定
了 OMITTAG NO ...'';}"onblur=“if (this.value == '') this.value=this.defaultValue;”必需“ />您可能忽略了关闭元素,或者您打算“自关闭”元素,即以“/>”而不是“>”结尾。
信息行 60,第 25 列:开始标签在这里
名字
有人对使其有效有任何想法吗? 谢谢 马克
答:
在 JavaScript 和 PHP 中始终使用大括号;忽略省略它们的 Slacker 代码;严格的代码是最好的代码。{}
其次,PHP 使用单引号和双引号的方式不同。
<?php
$a = 'user';
echo 'Hello $a';//Hello $a
echo "Hello $a";//Hello user
?>
其次,串联(PHP 中的句点,JavaScript 中的符号)是您在值方面似乎遇到的问题。避免使用双引号(如果有的话,性能提升可以忽略不计,但从长远来看,对编程上下文的敏锐更为重要)。
<?php
$a = 'user';
echo 'Hello '.$a.', how are you?';//Hello user, how are you?
?>
我在 PHP 中将元素切成几行,只是为了便于阅读。我从不避免在我的实时(或许多人称之为“生产”)代码中使用水平长行代码。这是记录您已经“完成”该代码的绝佳方式。日志查看程序 Hoo WinTail 通过允许您在使用滚轮时使用键来正确实现水平滚动,我希望他们能在任何地方实现这一点,尤其是 Notepad++(强烈推荐的高级代码编辑器)。input
Ctrl
还要保持 HTML 属性的字母顺序。如果您的代码可以使用高级查找和替换等程序进行预测,它将大大提高您快速修复早期不良编码习惯的能力。
总而言之:
<?php
if ($name == "" || $name == $required)
{
echo '<p><span>Name</span></p>';
echo '<input id="name" name="name" ';
echo 'onblur="if (this.value == '') {this.value = '.$required.';}" ';
echo 'onfocus="if (this.value == '.$required.') {this.value = '';}" ';
echo 'type="text" value="'.$name.'" />';
}
?>
最后,您使用的是 XHTML。这里需要一个关键的澄清。最高级别的编程是使用 XHTML5。
有一些解析器可以接受代码:
- HTML 解析器
- XML 解析器
还有代码的标准:
- HTML4的
- HTML5的
- XHTML 1.x
您需要将 HTML5 与 XML 解析器 (XHTML5) 一起使用:
<?php
if (stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml'))
{
header('Content-Type: application/xhtml+xml; charset=UTF-8');
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
}
else
{
header('Content-Type: text/html; charset=UTF-8');
}
?>
XML解析器要严格得多(Gecko渲染引擎,在Firefox中,但现在使用Waterfox),因此它将输出错误而不是让它们发生。了解错误可以修复它们并大大提高兼容性。如果你没有意识到,你就不会修复这些错误,因此你不会更有能力,也更难将自己与他人区分开来。在一个几乎放弃质量的世界里,质量至关重要。在我的个人资料中查看我的网站以获取更多好的代码(查看源代码)。祝你好运!
评论
$result
onfocus
.$result.
//
/* line breaks here */
评论
this.value=this.defaultValue;"Required" />
"
required
$required