为具有相同值的属性的html控件属性提供的首选项

时间:2017-08-21 07:26:05

标签: javascript html

如果两个属性具有相同的值id="xyz" name="xyz",则为html控制属性提供的首选项是什么?

我的代码如下所示:

<iframe scrolling="no" width="100%" name="topFrame" id="topFrame" frameborder="0" height="100%" runat="server"></iframe>

我正在尝试通过该属性访问iframe。因此,当我将iframe称为javascript:parent.frames['topFrame']时,其中一个值将是首选

2 个答案:

答案 0 :(得分:0)

并非所有HTML对象都可以拥有名称,并且可能不赞成使用表单元素。

在您的情况下,首选项不相关,但您访问框架的方式是:

使用parent.frames['topFrame']的DOM访问将使用名称,但在名称/ ID或框架集合重载的浏览器中除外 - 但您需要位置:

<a href="javascript:parent.frames['topFrame'].location='otherpage'">...

如果您想使用ID,则需要src

<a href="javascript:parent.document.getElementById('topFrame').src='otherpage'">...

答案 1 :(得分:0)

首先要注意的是window.frames windowid="a"

  

窗口,框架和自身IDL属性都必须返回Window对象的浏览上下文的WindowProxy对象。

规范的相关部分是just an alias

  

支持的属性名称随时由树形顺序组成,忽略以后的重复项:

     
      
  • 活动文档的任何子浏览上下文的浏览上下文名称,其名称不是空字符串,
  •   
  • 活动文档中具有非空名称内容属性的所有a,applet,area,embed,form,frameset,img和object元素的name content属性的值,并且
  •   
  • 活动文档中具有非空id内容属性的任何HTML元素的id内容属性的值。
  •   

所以哪一个是“首选”并不重要。

如果元素的id和名称相同,则将使用一个来确定名称,另一个将被忽略。如果使用name="a"并忽略a,则会获得a。如果是相反的方式,你仍然获得getElementById

如果元素的id和名称不同,那么它们都可以用来引用它。

如果两个不同的元素在name和id属性之间共享一个值,那么首先出现的元素将采用该名称。使用哪个特定属性并不重要。

不建议直接使用id和name属性。它们可以与窗口对象的现有属性冲突。最好使用querySelectorstatic SemaphoreSlim sem = new SemaphoreSlim(1,1); public void Save() { SaveAsync(); public async Task SaveAsync() { await sem.WaitAsync(); try{ this.customer.OrderCount = this.orders.Count(); this.customer.OrderTotal = this.orders.Sum(o => x.Total); this.customerRepo.Save(); }finally{ sem.Release(); } } } public async Task LoadAsync() { await sem.WaitAsync(); try{ this.customer = await this.customerRepo.GetCustomerAsync(...); this.orders = await this.customerRepo.GetOrdersAsync(...); }finally{ sem.Release(); } } ,这样您就可以明确地说您正在寻找DOM中的元素。