Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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
全局访问通过php命名的javascript对象_Javascript_Php_Jquery_Mysql - Fatal编程技术网

全局访问通过php命名的javascript对象

全局访问通过php命名的javascript对象,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我有一堆CSS属性存储在通过PHP访问的MySQL数据库中。我需要在页面完成加载后使这些属性对JavaScript可用 所以我所做的是foreach行,将值放在Javascript对象中,如下所示: foreach ($cellcontent as $cellproperty) { echo 'var '.$cellproperty->cell_id.' = {cellwidth:"'.$cellproperty->cell_width.'"};'; } (为了简单起见,我

我有一堆CSS属性存储在通过PHP访问的MySQL数据库中。我需要在页面完成加载后使这些属性对JavaScript可用

所以我所做的是
foreach
行,将值放在Javascript对象中,如下所示:

foreach ($cellcontent as $cellproperty) {
    echo 'var '.$cellproperty->cell_id.' = {cellwidth:"'.$cellproperty->cell_width.'"};';
}
(为了简单起见,我在这里只包含一个对象属性,但实际上还有更多。)

我的问题是,在运行时,通过JavaScript,我得到了html页面中某个地方的
cell\u id
引用,如下所示:

var dacell = $(this).closest("div");
var cellid = dacell.attr("id");
因此在这一点上,
cellid
等于php输出中my
var
的名称

但是,当我试图通过JavaScript获取对象的属性(
cellwidth
)时,它不起作用。当我尝试查看警报中的值时,表示其未定义:

alert(cellid.cellwidth);
我想我只是在这里没有引用实际的对象,只是试图得到现在已经变成字符串的属性


有没有办法恢复对对象本身的引用?

用这么多东西污染全局名称空间是一种非常普遍的做法。
获取需要注入JS的所有值,创建一个关联数组,并将其作为单个JSON注入页面。

。eval()javascript函数修复了这一切

而不是做:

警报(cellid.cellwidth)

我做到了:

警报(eval(cellid).cellwidth)

一切顺利

谢谢你花这么多时间

干杯


Erick p.

var cellid=dacell.attr(“id”)

变量
cellid
是一个字符串。您希望看到的变量位于全局名称空间中,您可以通过以下方式访问该名称空间:


window[cellid].cellwidth

可能重复您提出的问题。JS和PHP是两种不同的东西,在两个不同的地方执行。请参见单元格id的值是多少?如果您编辑您的文章以包含JavaScript输出,我们可能很容易看到问题所在-查看HTML源代码以进行双重检查。您的JavaScript控制台中是否有错误?如果格式正确,阅读问题会容易得多。第一次在这里发布。我不知道我有这样的格式,这是不对的<代码>var cellid=…
没有覆盖上面的任何内容。啊,好吧,我搞错了。我认为“cellid”是由
$cellproperty->cell\u id
输出的值之一。我更改了答案。这是对eval的拙劣使用,请使用jkris的答案。主要的一点是全局变量是窗口对象的一部分,可以使用属性访问而不是eval来访问。