简而言之,我想使用对象文字来允许我以任意顺序将未知数量的变量传递给函数。虽然这在理论上没什么大不了的,但在我的代码中,这个对象字面量被传递给名为on_change
.
on_change
通过将元素的 innerHTML 与字符串进行比较来工作;如果相同,则设置超时以再次调用该函数。如果元素的 innerHTML 与字符串不同,则执行第三个参数,这将是一个函数或字符串。无论哪种方式,它都会执行。我已经对这个功能进行了大量测试并使用了一段时间。
但是,我似乎无法让对象文字流经函数调用......
var params = { xpos:'false'};
on_change('window_3_cont_buffer','','
if(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[0].innerHTML == \'ERROR\'){
alert(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[1].innerHTML);
return false;
} else {
Window_manager.windows[3].load_xml(\'location/view.php?location_ID=3\', \'\', ' + params + ' ); }
');
我将此称为表单提交的一部分。在这一行之后,我调用一个函数来通过 ajax 加载一些内容,它工作正常并且会从on_change
函数中触发代码。
我已经测试了这个load_xml
功能,它能够调用alert(param.xpos)
并得到正确的响应。我什至可以添加一个未定义的检查,这样我打电话的其余时间load_xml
就不会被警报淹没。
该load_xml
函数首先设置on_change
函数,然后调用该函数将内容加载到隐藏的 div。一旦 AJAX 请求更新了该 DIV,该on_change
函数现在应该调用该parse_xml
函数。这会从 xml 文件中提取信息。然而......这个对象文字参数的想法是它可以告诉这个parse_xml
函数忽略某些事情。
on_change("window_" + this.id + "_cont_buffer", "", "Window_manager.windows[" + this.id + "].parse_xml('" + param + "')");
这是 的一部分load_xml
,即使有参数位,它也可以正常工作。除了,parse_xml
似乎无法使用该参数。
我已经能够做到这一点,parse_xml
可以alert(param)
并给出[object object]
我认为意味着对象文字已经通过的地步,但是当我尝试调用时,alert(param.xpos)
我得到了未定义。
我知道这是一个问题,我可以通过让函数采用数不胜数的布尔参数来解决它,但这并不是一个很好的解决方案。