繁体   English   中英

为什么我的JavaScript无法正常工作?

[英]Why won't my javascript work?

这是我的JavaScript代码(反斜杠用于转义):

<script type="text/javascript">
        $(function(){
            //datepicker
            $(\'#start\').datepicker({
                inline: true
            });
        });
</script>

以及相关的HTML:

<input type="text" name="start" id="start" class="hasDatepicker" />

它与jquery和jquery ui随附的示例代码基本相同。 我在想可能是所有内容都附加到了一个名为$ content的变量上,并在最后回显,而不是简单地成为HTML。

感谢您对此难题的任何解答。

我也许应该更直观地了解我的代码是如何设置的,而不是在最后进行解释。 通常是这样的:

$content .= '<script type="text/javascript">
        $(function(){
            //datepicker
            $(\'#start\').datepicker({
                inline: true
            });
        });
</script>';

我的HTML也类似地添加到$ content中:

$content .= '<input type="text" name="start" id="start" class="hasDatepicker" />';

您是否尝试了没有反斜杠?

<script type="text/javascript">
        $(function(){
            //datepicker
            $('#start').datepicker({
                inline: true
            });
        });
</script>

真的没有逃脱

和:

您是否使用Firebug或任何其他Web调试工具?

对更新问题的回答

您的$content变量将输出以下内容:

<script type="text/javascript">
  $(function(){
    //datepicker
    $('#start').datepicker({
      inline: true
    });
  });
</script>

这可以按原样工作(假设您的页面没有问题): http : //jsbin.com/oxekuw/2/edit

我鼓励您检查控制台输出(通常可通过按F12进行访问),以获取有关未找到$datepicker方法的任何消息。 这表明他们在链接jQuery或jQuery UI时出现问题。

如果需要,请使用以下内容作为模板。 如果您想在那里进行测试,也可以在线获得: http : //jsbin.com/oxekuw/3/edit

<!DOCTYPE html>
<html>
  <head>
    <title>Datepicker</title>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.19/jquery-ui.js"></script>
    <script type="text/javascript">
      $(function(){
        //datepicker
        $('#start').datepicker({
          inline: true
        });
      });
    </script>
  </head>
  <body>
    <input id="start" type="text" />
  </body>
</html>

对原始问题的回应

当在由单引号引起来的字符串中使用单引号时,您将逃脱。 您虽然没有逃脱:

$(\'#start\'); // No-no

检查控制台输出,您可能会看到以下效果: SyntaxError: Unexpected token ILLEGAL

虽然有时间和地点可以让您在选择器中转义字符。 以下是您何时退出的示例:

$("input[name=\"foo\"]"); // Little more sensible

请注意,双引号内的双引号。 我们必须将内部字符串与外部字符串区分开,以免过早地终止字符串。

更好的解决方案是错开双引号/单引号。 如果在外部使用双引号,请在内部使用单引号:

$("input[name='foo']"); // Much easier on the eyes

正如其他人指出的那样,您的代码应该可以工作。

一个可能引起问题的常见问题是您有多个具有相同ID( id="start" )的HTML元素。

是否可以在创建输入元素之前运行datepicker()代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM