2017-01-17 12 views
2

ユーザーがdivをクリックしてボタンをクリックすると、そのdivの背景色が変更されるため、値を変数として保存する必要があるように関数を作成しようとしています。常に "ストレージ"変数は定義されていないと言われているので、動作させるようには見えません。ページで見ることができます選択したdiv jqueryの色を変更する

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="content-link2"> 
    <title>Template 1</title> 
    <link href="http://localhost/fyproject/public/templates/css.css" rel="stylesheet" type="text/css"> 

      <button class="btn btn-default form-control margin color" value="yellow">Background</button> 
      <button class="btn btn-default form-control margin color" value="red">Background</button> 
    <div class="logo"> 
    <img class="images" id="image" src="#" alt="Your Logo"> 
    </div> 
    <div contenteditable="true" id="content" class="draggable ui-widget-content refresh ui-draggable ui-draggable-handle" style="position: relative;"> 
    <p>hlo</p> 
    </div> 
    <div id="comments"> 
    <form name="forma"> 
     <textarea name="commentUser" id="commentUser" class="refresh" cols="40" rows="5">Comments here... 
     </textarea> 
     <br> 
     <input type="submit" value="Ready!" id="send-data"> 
     <!--onClick="writeComment(e);"--> 
     <div id="editTxt" class="refresh" contenteditable="true"> 
     <p>This text can be by the user.</p> 
     </div> 
    </form> 
    </div> 


    </div> 

$(document).ready(function() { 
    $('.color').click(function() { 
    $(storage).css("background-color", $(this).attr("value")); 
    }); 
}); 

$('#content-link2').on('click', 'div', function(e) { 
    var storage = ($(e.target).attr("id")); 
}); 

:ページ全体がで見ることができ、あなたのストレージ変数が第二の機能の範囲内である

https://jsfiddle.net/mbqzL73r/

+2

$(document).ready(function() { var storage; $('.color').click(function() { $('#' + storage).css("background-color", $(this).attr("value")); }); $('#content-link2').on('click', 'div', function(e) { storage = ($(e.target).attr("id")); }); });
用スコープにグローバルストレージを作成する必要がありますそれは両方のクリックにグローバルです – Pete

+0

それが可能ならば私に例を教えてください、私は視覚的な学習です私は何をする必要があるか想像するのは難しいです;) – Przemek

+0

以下の回答を参照して、この記事を読んでください[JavaScriptの変数の範囲は何ですか](http://stackoverflow.com/questions/ 5003431/what-of-the-of-variables-in-javascript) – Pete

答えて

2

あなたがクリック外のストレージを宣言して作成する必要があり、両方のクリックイベント

More information about js variable scope

+0

' # 'を2番目のクリックハンドラのセレクタに移動します –

+0

ああ、ありがとうございました – Pete

+0

なぜ 'storage = e.target'だけではないのですか? # – Satpal

0

、あなたはグローバル変数として保存を宣言する必要があります。例えば:

var storage = ""; 
$(document).ready(function() { 
    $('.color').click(function() { 
    $(storage).css("background-color", $(this).attr("value")); 
    }); 
}); 

$('#content-link2').on('click', 'div', function(e) { 
    storage = ($(e.target).attr("id")); 
}); 
+0

'storage = e.target'を使用すると、IDセレクタとして使用できるように '#'が付加されます。 – Satpal

関連する問題