Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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中名称冲突的最佳方法是什么?_Javascript - Fatal编程技术网

解决javascript中名称冲突的最佳方法是什么?

解决javascript中名称冲突的最佳方法是什么?,javascript,Javascript,我最近写了一些javascript代码,这些代码填充了一个基于XML的下拉列表,非常简单。问题是,我必须编写类似的代码,才能在不同的页面上执行几乎相同的操作 由于代码几乎相同,我将大多数函数命名为相同的,认为它们永远不会包含在同一页中。但是,由于两个javascript文件最终都包含在同一个HTML页面中,因此出现了命名冲突 当我必须返回并更改名称时,我只是在方法名称中添加first_uu或second_uu。这是一种痛苦,对我来说似乎不太优雅。我想知道是否有更好的方法来解决javascript

我最近写了一些javascript代码,这些代码填充了一个基于XML的下拉列表,非常简单。问题是,我必须编写类似的代码,才能在不同的页面上执行几乎相同的操作

由于代码几乎相同,我将大多数函数命名为相同的,认为它们永远不会包含在同一页中。但是,由于两个javascript文件最终都包含在同一个HTML页面中,因此出现了命名冲突

当我必须返回并更改名称时,我只是在方法名称中添加first_uu或second_uu。这是一种痛苦,对我来说似乎不太优雅。我想知道是否有更好的方法来解决javascript中的名称冲突?

尝试各种库中使用的javascript(或名称空间)

尽量保持干燥(不要重复),这样可以避免名称冲突。如果代码几乎相同,那么最好通过创建一个可以处理这两种情况的函数来避免代码重复。该函数可以采用两个参数:填充哪个下拉列表和使用什么数据。这也有助于维护性


更新:我假设您从AJAX请求获取XML。在这种情况下,您可以使用适当的参数动态创建匿名函数,以便在循环中进行回调。

我将研究如何将两段代码(函数?)合并到一个函数中。如果您需要填充列表框,则将列表框id传递到函数中,这样您就不会硬编码为仅在一个控件上操作

我是在火箭公司的网站上做这件事的,在那里我销售的火箭发动机具有不同的延迟值,但本质上,它们是相同的产品,只是延迟值不同

也许这可以解释我想说的话。。。如果一个图像文件碰巧丢失了,我会使用它,它会显示一个“无图像”图像来代替真实图像

function goBlank(image)
{
  if(image) {
    var imgobj = document[image];
    imgobj.src="/images/blank.png";
  }
}
在本例中,您可以使用以下名称来调用它:

<img src="/images/aerotech.png" name="header" onError="goBlank('header');">

如果你需要更多的例子,比如使用列表框,请告诉我。甚至可以发布一些您的示例代码。

另一种选择(如果可能)是将代码小心地绑定到元素本身

e、 g


document.getElementById('foo').stuff=function(msg){
//在这里你想做什么就做什么。。。
警惕('你超过我:'+味精);
};
<input type="text" name="foo" id="foo" value="World" onchange="this.stuff('Hello ' + this.value);"/>
<script>
  document.getElementById('foo').stuff = function(msg){
    //do whatever you want here...
    alert('You passed me: ' + msg);
  };
</script>