2012-11-11 65 views
0

的jsfiddle外部改变:http://jsfiddle.net/veksen/7TRgE/1/变量不的功能

如果我从我的函数中调用该变量的值,它的工作原理。但是,如果我在函数之外调用它,则不会发生。

我觉得它与变化有关,因为它是第一次分配好,但不会改变。

var diff_res = { norm:0, nm:-40, hell:-100 }; 
var difficulty = "hell"; 
$("select").change(function() { 
    difficulty = $("select option:selected").val(); 
    $(".inside").text(diff_res[difficulty]); 
}) 
.change(); 

var char_fr = 30; 
char_fr += diff_res[difficulty]; 

$(".outside").text(diff_res[difficulty]); 

+0

你有“选择”选项吗? –

+0

是的,我选择了(html5) – veksen

回答

1

UPDATE:

通过重新执行,我的意思是这样的:

$(document).ready(function() { 
    'use strict'; 
    var diff_res = { 
      norm: 0, 
      nm: -40, 
      hell: -100 
     }, 
     difficulty = "hell", 
     char_fr = 30, 
     changeOutside = function changeOutside() { 
      $(".outside").text(diff_res[difficulty]); 
     }; 
    $("select").change(function() { 
     difficulty = $("select option:selected").val(); 
     $(".inside").text(diff_res[difficulty]); 
     changeOutside(); 
    }).change(); 
    char_fr += diff_res[difficulty]; 
}); 

的观点是:$(".outside").text(diff_res[difficulty]);只执行一次,加载DOM时,这是为什么text()最初设置为-100。再次改变.outside,则需要重新运行$(".outside").text(diff_res[difficulty]);

ORIGINAL:

您的问题是:

$(".outside").text(diff_res[difficulty]); 

只执行一次,在$(document).ready()功能。如果您希望更频繁地更改,则需要在change处理程序中重新执行。

+0

围绕“外部”代码添加处理程序会引起麻烦,因为它在每个处理程序中包含一个var + = value,导致每次更改下拉列表时外部代码累加起来 – veksen

+0

非常感谢远! http://jsfiddle.net/veksen/7TRgE/4/ 如果你检查JSFiddle,你会发现test1和test2更新很好,但是单独使用变量(在test3中),它不会。 我的当前项目在插入之前使用变量本身(使用'(diff_res [难度])'在外部添加,我可以适应这种情况,但是,我很困惑它为什么会发生? – veksen

+0

'.test3'的值不会改变,因为源变量('char_fr')的值不会从'30'改变。'。当'char_fr'的值发生变化时(虽然'select.change()'事件必须触发来启动'.test3'中的变化),test3'会改变。将其更改为'$(“。test3”).text(char_fr + = 300);'在显示变量的同时更新变量的值。 – pete

1

.inside有其说,一个事件: “如果有人改变,我[...]”。 .outisde没有事件。所以:

$(".outside").text(diff_res[difficulty]); 

只执行一次。

http://jsfiddle.net/7TRgE/2/

选择的选项: “纳米” 和默认值是 “-40”。

+0

你让我走上了一条曲子,我会在几分钟内重新发布,谢谢! – veksen

+0

嗯,我可以得到外面的代码更新,但它不能很好地运行我的代码,使用.each在html中查找数据并添加+ =,只在外部添加它选择器不起作用(可能来自另一个外部变量?) 它在jsfiddle中工作,但不在我的完整项目上 – veksen

+0

@ user1732521对不起? –