JS代码没有运行

时间:2015-09-20 12:34:55

标签: php jquery

我已经下载了一个笔记应用程序(PHP / css + jquery),我想隐藏包含记事本的div。我不知道为什么,但我在js文件中写的内容并不会对网站造成影响。

这是js文件。一切正常,但是当我写第二行时,它根本没有隐藏div。

$(function(){

  $('#pad').hide();


  var note = $('#note');

  var saveTimer,
    lineHeight = parseInt(note.css('line-height')),
    minHeight = parseInt(note.css('min-height')),
    lastHeight = minHeight,
    newHeight = 0,
    newLines = 0;

    var countLinesRegex = new RegExp('/n', 'g');

    note.on('input', function(e){
      clearTimeout(saveTimer);
      saveTimer = setTimeout(ajaxSaveNote, 2000);

      newLines = note.val().match(countLinesRegex);

      if(!newLines) {
        newLines = [];
      }

      newHeight = Math.max((newLines.length + 1)*lineHeight, minHeight);

      if(newHeight != lastHeight){
        note.height(newHeight);
        lastHeight = newHeight;
      }

    }).trigger('input');

    function ajaxSaveNote(){
      $.post('index.php', { 'note' : note.val() });
    }



});

这是PHP:

<?php

$note_name = 'note.txt';
$uniqueNotePerIP = false;

if($uniqueNotePerIP){

    // Use the user's IP as the name of the note.
    // This is useful when you have many people
    // using the app simultaneously.

    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $note_name = 'notes/'.md5($_SERVER['HTTP_X_FORWARDED_FOR']).'.txt';
    }
    else{
        $note_name = 'notes/'.md5($_SERVER['REMOTE_ADDR']).'.txt';
    }
}


if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
    // This is an AJAX request

    if(isset($_POST['note'])){
        // Write the file to disk
        file_put_contents($note_name, $_POST['note']);
        echo '{"saved":1}';
    }

    exit;
}

$note_content = '

                Write your note here.

             It will be saved with AJAX.';

if( file_exists($note_name) ){
    $note_content = htmlspecialchars( file_get_contents($note_name) );
}

?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Devoirs Communs</title>

        <!-- Our stylesheet -->
        <link rel="stylesheet" href="assets/css/styles.css" />

        <!-- A custom google handwriting font -->
        <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Courgette" />
        <script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>

        <!--[if lt IE 9]>
          <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>

    <body>
      <input type="text">
      <input type="button">
        <div id="pad">
            <h2>Note</h2>
            <textarea id="note"><?php echo $note_content ?></textarea>
        </div>


        <footer>
        </footer>

        <!-- JavaScript includes. -->

        <script src="assets/js/script.js"></script>

    </body>
</html>

1 个答案:

答案 0 :(得分:2)

您的REGEXP错误。

您需要更改此行:

var countLinesRegex = new RegExp('\\n', 'g');

但这不是唯一的问题。跟着它:

1 - 您开始隐藏#pad元素,我无法在您的代码中看到您在哪里再次显示它:

$('#pad').hide();

2 - 你不能以这种方式获得线高。如果没有line-height属性,它将返回undefined。最小高度相同:

parseInt(note.css('line-height'))

你应该使用一些插件以你想要的方式获得这种行为。

3 - 假设第2项正确地返回了行高,它将返回类似&#34; 10px&#34;或最差的&#34; 1.2em&#34;。当你试图用它做一些数学运算时,你会得到一个错误或者可能会从中删除单位测量。