0

我正在尝试创建一个随机生成器,如果发现提示,则在另一个页面上使用 jQuery 会很容易,所以我尝试了以下操作。

<html>
 <head>
  <title>hello</title>
 </head>
 <body>
  <script type="text/javascript">
   $ (document).ready(function() {
    $("body").load("hello.txt", function(msg) {
        var textArray = msg.split("\n");
    var zufall = Math.round ( ( textArray.length - 1 ) * ( Math.random() ) );
    });
   });
   document.write('<p>' + textArray[zufall] + '</p>');
  </script>
 </body>
</html>

它应该像这样工作:它加载一个包含多行文本的文档,并在换行符处将其拆分。这应该存储在一个数组中,并且应该在网站上显示一条随机线。

我的第一个想法是将文本直接写入数组,但我认为加载它对网站来说会更有效。

谢谢回答

PS:当浏览器运行它时,没有像“此页面上的错误”这样的错误消息。

最终编辑

谢谢帮忙!!!现在它起作用了。

这是解决方案:

<html>
    <head>
        <title>hello</title>
    </head>
    <body>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
            <script type="text/javascript">
            $ (document).ready(function() {
                 $.get("hello.txt", function(msg) {
                    var textArray = msg.split("\n");
            var zufall = Math.round ( ( textArray.length - 1 ) * ( Math.random() ) );

            $('body').append('<p>' + textArray[zufall] + '</p>');
                });
            });
        </script>
    </body>
</html>
4

3 回答 3

2

你需要把document.write()你的function(msg)因为AJAX是异步的并且load正在使用AJAX,所以document.write()不要等到load完成调用你的匿名函数

   $(document).ready(function() {
    $.get("hello.txt", function(msg) {
        var textArray = msg.split("\n");
        var zufall = Math.round ( ( textArray.length - 1 ) * ( Math.random() ) );
        $('body').append('<p>' + textArray[zufall] + '</p>');
    });
   });

编辑:

我刚刚注意到您没有包含您的 jquery 库 o_O

在您的上方添加以下内容<script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
于 2012-04-05T10:03:57.813 回答
0

NiftyDude 是对的,您已将 document.write 调用置于 document.ready 函数的范围之外。还:

  • 使用 document.write 也几乎总是一个坏主意。在这种情况下,您在使用之前等待 AJAX 调用完成,这意味着您保证 document.write 将覆盖整个页面正文。
  • 您正在使用 $('body').load,在这种情况下这是不合适的 - 您将手动将文本添加到正文。

这是一个修复:

<html>
 <head>
  <title>hello</title>
 </head>
 <body>>
  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript">
   $(document).ready(function() {
    $.get("hello.txt", function(msg) {
        var textArray = msg.split("\n");
        var zufall = Math.round ( ( textArray.length - 1 ) * ( Math.random() ) );
        $('body').append('<p>' + textArray[zufall] + '</p>');
    });
   });
  </script>
 </body>
</html>
于 2012-04-05T10:16:15.217 回答
0

试试这个替代解决方案

$(document).ready(function() {
    $.ajax({ 
        url: "hello.txt",
        type: "GET",
        dataType: "text",
        success: function(data) {
            textArray = data.split("\n");
            zufall = Math.round ( ( textArray.length - 1 ) * ( Math.random() ) );
             document.write('<p>' + textArray[zufall] + '</p>');
        }
    });
});

还要确保您已包含 jquery 文件。

于 2012-04-05T10:51:03.950 回答