有没有一种有效的方法可以将<span>元素包含在以下JavaScript中?</span>

时间:2011-01-31 04:11:18

标签: javascript validation xhtml-1.0-strict

我有一个简单的小JavaScript代码片段来尝试保护我的电子邮件地址:

<p>Email:<br />
<script type="text/javascript">
    mixupE='mywebsite.com'
    mixupE=('myname' + '<span>@</span>' + mixupE)
    document.write(mixupE)
</script>
</p>

问题在于它是唯一不验证xhtml strict的代码段。这与span @ / span部分有关。我只是包含了跨度,以便我可以将@符号设置为与电子邮件地址的其余部分不同。

任何人都有更好的方法吗?

理想情况下,我想让所有内容都验证:o)

我现在就解决了这个问题:

<p>Email:<br />
        <script type="text/javascript">
            mixupA='name'
            mixupA=('my' + mixupA)
            document.write(mixupA)
        </script><span>@</span><script type="text/javascript">
            mixupB='site.com'
            mixupB=('myweb' + mixupB)
            document.write(mixupB)
        </script>
</p>

可能不是最好的做事方式,但它似乎有用,我的网页现在验证为xhtml严格:o)

5 个答案:

答案 0 :(得分:3)

您需要将该元素包装在CDATA块中,如规范中有关HTML和XHTML之间差异的部分所述,特别是script and style elements部分。

但是,您几乎肯定会使用text / html Content-Type为您的XHTML提供服务,因此您需要跳过使其像HTML一样足以继续跨浏览器工作的环节。在这种情况下,by commenting out the CDATA markers

<script type="text/javascript">
    //<![CDATA[
    mixupE='mywebsite.com'
    mixupE=('myname' + '<span>@</span>' + mixupE)
    document.write(mixupE)
    //]]>
</script>

答案 1 :(得分:1)

使用间接方式表示<

<script type="text/javascript">
  var lt = String.fromCharCode(60);
  mixupE='mywebsite.com'
  mixupE=('myname' + lt + 'span>@' + lt + '/span>' + mixupE)
  document.write(mixupE)
</script>

答案 2 :(得分:0)

这是我和家伙们在一起的地方。我有以下两种可能性,它们似乎都有效,并且都验证为严格的xhtml。

<script type="text/javascript">
   <!--
   var lt = String.fromCharCode(60);
   mixupE='mywebsite.com'
   mixupE=('myname' + lt + 'span>@' + lt + '/span>' + mixupE)
   document.write(mixupE)
   //-->
</script>

<script type="text/javascript">
   //<![CDATA[
   mixupE='mywebsite.com'
   mixupE=('myname' + '<span>@</span>' + mixupE)
   document.write(mixupE)
   //]]>
</script>

为什么我应该选择其中一个而不是另一个?

答案 3 :(得分:0)

使用CDATA和转义的组合,如下所示:

<script type="text/javascript">
//<![CDATA[
mixupE="mywebsite.com";
mixupE=("myname" + "<span>@<\/span>" + mixupE);
document.write(mixupE);
//]]>
</script>

答案 4 :(得分:0)

最简单的答案就是分割字符串,使其不认为它是一个实体。这是完全有效的,几乎与您的原始相同:

<p>Email:<br />
<script type="text/javascript">
    mixupE='mywebsite.com'
    mixupE=('myname<' + 'span>@<' + '/span>' + mixupE)
    document.write(mixupE)
</script>
</p>

没有必要混淆尖括号。

但请不要忘记您的var;。简化了:

<p>Email:<br />
<script type="text/javascript">
    var mixupE='mywebsite.com';
    document.write('myname<' + 'span>@<' + '/span>' + mixupE);
</script>
</p>