Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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 从HTML访问对象?_Javascript_Object_Prototype - Fatal编程技术网

Javascript 从HTML访问对象?

Javascript 从HTML访问对象?,javascript,object,prototype,Javascript,Object,Prototype,Keydiv是原始密钥,它包含此对象的HTML 当我在范围中有htmlElement时,例如单击它,是否可以访问/获取/设置myObject和其他值:foo1和foo2 myObject是原型,我不介意使用原型getter/setter,但我不知道如何通过HTML元素访问对象 制作对象:不要介意谷歌地图部分,它只是一个普通对象 myObject { div: htmlElement, foo1: bar1, foo2: bar2 } 分配新的自定义HTML(data.latlng、data.

Key
div
是原始密钥,它包含此对象的
HTML

当我在范围中有
htmlElement
时,例如单击它,是否可以访问/获取/设置
myObject
和其他值:
foo1
foo2

myObject
是原型,我不介意使用原型getter/setter,但我不知道如何通过
HTML
元素访问对象


制作对象:不要介意谷歌地图部分,它只是一个普通对象

myObject { div: htmlElement, foo1: bar1, foo2: bar2 }

分配
新的自定义HTML(data.latlng、data.foo、myMap)到JS变量

//Clicking element that was made above
jQuery('body').on('click', '.custom-html', function(event) {

      //I need to access customHTML.foo for example, how?
      //PS! I need to access it from outside, I cannot 
      //attach this click event in prototype.draw
}
您可以通过以下方式访问它:

 var customEle = new CustomHTML(data.latlng, data.foo, myMap);
更新以回答关于多个元素的第二个问题

1) 将ID分配给在
draw
函数中创建的
div

2) 在JSON中创建一个结构,将所有
customHTML
by
id
作为键保存

 jQuery('body').on('click', '.custom-html', function(event) {
   alert(customEle.foo);
 }
3) 如何检索它

var arrCustomHTML = {};
arrCustomHTML.divId = customHTML;
还有另一种方法。在创建该元素后,使用jquery
data()
函数在创建过程中为该
div
追加
customHTML

jQuery('body').on('click', '.custom-html', function(event) {

       var divId = $(this).prop('id');
       var customHTMLForDiv = arrCustomHTML.divId;
       alert(customHTMLForDiv.foo);
 }  
要在事件发生时访问它,请执行以下操作:

  div.data('customHTML' , customHTML);

Lmk如果它对你有用

myObject
JSON对吗?@pratikwebdev数据取自JSON,但我构建了自己的原型
myObject
,这只是浏览器内存中的一个对象,我需要通过
HTML
访问它(准确地说,是点击事件)它在视口中渲染,并且是该对象的一部分。@Juhana为什么不呢?字符串格式的HTML元素?进一步渲染,这个字符串可以用来渲染元素?所以
myObject
也是JSON。如果您可以从浏览器内存中提取它,或者从任何可以在范围内的HTML元素中访问它的地方提取它。提供更多关于何时何地需要访问它的信息。@pratikwebdev不,它不是JSON,我在从那里获取数据并构造自己的对象之前解析JSON。我添加了一个示例。这是一个好主意,但是如果有多个
CustomHTML
?如何访问作为该对象一部分的特定
HTML
元素的正确对象?更新了我的答案@索洛坦克斯,我相信它会起作用的。我在脑海中使用了
id
data-
属性,但我认为可能有一种更简单的方法来获取对象a.k.a获取
HTML
元素a.k.a的父属性在对象的层次结构中向上移动,并使用原型getter和setters.AFIK,这是不可能的,因为
div
存储在
customHTML
对象,但一旦呈现,它就不能与JSON对象本身耦合。如果它解决了你的问题,请接受并投票
  div.data('customHTML' , customHTML);
   jQuery('body').on('click', '.custom-html', function(event) {
       var ele = $(this).data('customHTML');
       alert(ele.foo);
  }