将变量传递给javascript中的其他函数

时间:2017-08-05 19:58:50

标签: javascript jquery

from ib.opt import Connection, message
import time
import datetime

list_time = []
global time_converted
def reply_handler(msg):
    if msg.typeName == "currentTime":
        time = msg.time
        list_time.append(time)
        time_converted = (datetime.datetime.fromtimestamp(int("%s"% time
                                                              )).strftime('%Y-%m-%d %H:%M:%S'))
        return time_converted



def GetTime():
    conn = Connection.create(port=7496, clientId=100)
    conn.registerAll(reply_handler)
    conn.connect()
    conn.reqCurrentTime()
    while True:
        if len(list_time) == 0:
            pass
        elif len(list_time) == 1:
            break
            conn.disconnect()

如何将default_img var传递给以下mouseleave函数? 感谢您的帮助:))

4 个答案:

答案 0 :(得分:2)

一个选项是在2个函数之外声明一个变量。

var default_img = '';
$('.header_menu_item').on('mouseenter',function(){
default_img = $(this).find('.header_menu_item_icon_img').attr('src');
   var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
   $(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
   $(this).find('.header_menu_item_icon_img').prop('src',default_img);
});

答案 1 :(得分:1)

将其设置为元素本身的数据,然后再检索

//setting
$(this).data('default_img',default_img);

//retrieving
var img = $(this).data('default_img'); 

通过本地js

//setting
this.dataset['default_img'] = default_img;

//retrieving
var img = this.dataset['default_img'];

您也可以在html本身之前设置data- *属性,因此无需使用JS来设置初始数据

<img src="http://example.com/someimg.jpg" data-default_img="http://example.com/someimg.jpg" />

data-* attributes reference

dataset reference

jQuery's data() method

答案 2 :(得分:0)

您需要使用全局变量。函数只能将变量直接传递给它调用的函数,而不是外部调用的函数。

var default_img;
$('.header_menu_item').on('mouseenter',function(){
    default_img = $(this).find('.header_menu_item_icon_img').attr('src');
    var hover_img = $(this).find('.header_menu_item_icon_img').attr('data-hover');
    $(this).find('.header_menu_item_icon_img').prop('src',hover_img);
}).on('mouseleave',function(){
    $(this).find('.header_menu_item_icon_img').prop('src',default_img);
});

答案 3 :(得分:-1)

你无法直接传递它 - 你可以将它存储在外部变量中 - 但你必须按每个项目进行:

$('.header_menu_item').each(function(){

  var $header_menu_item_icon_img = $(this).find('.header_menu_item_icon_img'),
      default_img = $header_menu_item_icon_img.attr('src'),
      hover_img = $header_menu_item_icon_img.attr('data-hover');

  $(this).on('mouseenter',function(){ 
    $header_menu_item_icon_img.prop('src',hover_img);
  }).on('mouseleave',function(){
    $header_menu_item_icon_img.prop('src',default_img); 
  });
});