Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Access$(';选择器';)。函数/对象中的数据_Javascript_Jquery - Fatal编程技术网

Javascript Access$(';选择器';)。函数/对象中的数据

Javascript Access$(';选择器';)。函数/对象中的数据,javascript,jquery,Javascript,Jquery,如何访问函数或对象中由$.data()设置的值 $('#timers').data('firsttimer', 100); //prints 100 document.write($('#timers').data('firsttimer')); function blah(){ //Prints nothing document.write($('#timers').data('firsttimer')); }

如何访问函数或对象中由$.data()设置的值

       $('#timers').data('firsttimer', 100);


    //prints 100
    document.write($('#timers').data('firsttimer'));

    function blah(){
        //Prints nothing
        document.write($('#timers').data('firsttimer'));
    }

blah();

查看此JSFIDLE以方便测试代码

问题在于“document.write()”。尽量避免它。

由于某种原因,我在函数调用中遇到了
document.write()
的问题,但是如果我使用jQuery的
.append()
,它可以正常工作


编辑:

找到有关
文档的此stackoverflow问题。请编写

这篇文章中的一个答案中有一个有趣的句子:

以我的拙见,只要您在文档加载后不尝试使用document.write,document.write就不是天生的邪恶。


因此,这可能是问题的关键(或部分原因)。

在这种情况下,我相信您的document.write以某种奇怪的方式在DOM上跺脚,清除了计时器分区。将两个document.write调用切换为警报调用(并添加一行以调用blah())使我可以看到两个警报框,两者都显示值为100

<div id="timers"></div>

并非所有浏览器的行为都是一致的。请记住,在JSFIDLE上,由于您选择了左侧的
onLoad
设置,因此该代码已经包装在窗口加载回调中。加载DOM后,使用
document.write进行的任何后续更改都将替换整个文档

以下是on文档中的相关文本。请编写:

除非在解析文档时从脚本元素的主体调用,或者在脚本创建的文档上调用,否则调用此方法将首先清除当前页面,就像调用了document.open()一样。 以下是浏览器在我的Mac电脑上的表现:

铬与狩猎 把文件一扫而光。即使是100也没有打印出来。文本节点本身在这里被忽略,但当包装在一些html标记中时,它们就会显示出来。与上面相同,值分别包装在
标记中

Opera和Firefox
擦除文档,然后附加文本节点“100undefined”。它打印“未定义”,因为节点
在哪里调用blah()?在我的实际代码中,我不使用document.write,而是尝试将值分配给对象。然而,我的问题与代码的加载顺序有很大关系
<div id="timers"></div>
$('#timers').data('firsttimer', 100);

//shows 100
alert($('#timers').data('firsttimer'));

function blah(){
  //Prints nothing
  alert($('#timers').data('firsttimer'));
}

blah();
document.write($('#timers').data('firsttimer'));