Javascript 一页jQuery HTML上有3个相同的下拉列表

Javascript 一页jQuery HTML上有3个相同的下拉列表,javascript,jquery,html,Javascript,Jquery,Html,我想我已经陷入了困境,我希望在一个页面上有3个相同的下拉列表,显示不同城市的时钟(因此用户可以在任何时间查看多个时钟),但当我更新一个时钟的字段时,它会更新其他2个下拉列表,我想这将与 $(“选择”) 因为这3个下拉列表之间没有区别,但我无法计算出来。有人能帮忙吗 HTML 正确的代码: $(document).ready(function() { $("select").change(function() { var value = $(this).val(); $(thi

我想我已经陷入了困境,我希望在一个页面上有3个相同的下拉列表,显示不同城市的时钟(因此用户可以在任何时间查看多个时钟),但当我更新一个时钟的字段时,它会更新其他2个下拉列表,我想这将与

$(“选择”)

因为这3个下拉列表之间没有区别,但我无法计算出来。有人能帮忙吗

HTML

正确的代码:

$(document).ready(function() {
  $("select").change(function() {
    var value = $(this).val();
    $(this).parent('div').next('div').children('iframe').attr("src", "https://freesecure.timeanddate.com/clock/i50r05un/" + value + "/tluk/fs20/tct/pct/ftb/th");
  });
});

这是相对于$(This)选择iframe,因此您不是针对所有iframe,而是只针对要更改的iframe。

这不是关于
下拉列表的问题。在下拉更改时,您正在更新所有3个
iFrame

data id
属性分配给
select
并将相同的id分配给iframe,然后从data属性中获取
iframe
id并更改其src

html:


更新了

您必须对html文件和js文件进行如下更改。它工作起来很顺利。您可以复制粘贴并开始使用。它是根据您的示例定制的。享受吧

<!DOCTYPE html>
<html>
   <body>
      <head>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
         <script src="demo_script_src.js"></script>
      </head>
      <div id="London">
         <select>
            <option value="n136">London</option>
            <option value="n240">Sydney</option>
            <option value="n179">New York City</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n136/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
      <div id="Sydney">
         <select>
            <option value="n240">Sydney</option>
            <option value="n136">London</option>
            <option value="n179">New York City</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n240/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
      <div id="NewYork">
         <select>
            <option value="n179">New York City</option>
            <option value="n136">London</option>
            <option value="n240">Sydney</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n179/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
   </body>
</html>

这与下拉无关。您正在按下拉更改更新所有3个iFrame。为什么要添加额外的html?只需在$(this)上使用parent()、children()和next()函数,因为通过ID选择某个对象比遍历DOM更快、更可靠。如果HTML有任何变化,这段代码仍然有效。如果你想在将来修改HTML结构,在这种情况下,你必须根据嵌套的父级更改js。是的,但我假设HTML结构不会改变。最合适的html是将select和iframe放在一个div中,这样iframe就可以用next()^^@seahorspip选择,我永远不会认为结构不会改变。同样,通过ID选择某些东西比遍历DOM要快。而且,如果结构确实发生了变化,则不需要对javascript进行更改。它只是继续工作。
$(document).ready(function() {
  $("select").change(function() {
    var value = $(this).val();
    $(this).parent('div').next('div').children('iframe').attr("src", "https://freesecure.timeanddate.com/clock/i50r05un/" + value + "/tluk/fs20/tct/pct/ftb/th");
  });
});
<div id="London">
  <select data-id="London-iframe">
    <option value="n136">London</option>
    <option value="n240">Sydney</option>
    <option value="n179">New York City</option>
  </select>
</div>
<div>
  <iframe id="London-iframe" src="https://freesecure.timeanddate.com/clock/i50r05un/n136/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
</div>
<div id="Sydney">
  <select data-id="Sydney-iframe">
    <option value="n240">Sydney</option>
    <option value="n136">London</option>
    <option value="n179">New York City</option>
  </select>
</div>
<div>
  <iframe id="Sydney-iframe" src="https://freesecure.timeanddate.com/clock/i50r05un/n240/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
</div>
<div id="NewYork">
  <select data-id="NewYork-iframe" >
    <option value="n179">New York City</option>
    <option value="n136">London</option>
    <option value="n240">Sydney</option>
  </select>
</div>
<div>
  <iframe id="NewYork-iframe" src="https://freesecure.timeanddate.com/clock/i50r05un/n179/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
</div>
$(document).ready(function() {
  $("select").change(function() {
    var value = $(this).val();
    $('#' + $(this).data('id')).attr("src", "https://freesecure.timeanddate.com/clock/i50r05un/" + value + "/tluk/fs20/tct/pct/ftb/th")
  });
});
<!DOCTYPE html>
<html>
   <body>
      <head>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
         <script src="demo_script_src.js"></script>
      </head>
      <div id="London">
         <select>
            <option value="n136">London</option>
            <option value="n240">Sydney</option>
            <option value="n179">New York City</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n136/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
      <div id="Sydney">
         <select>
            <option value="n240">Sydney</option>
            <option value="n136">London</option>
            <option value="n179">New York City</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n240/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
      <div id="NewYork">
         <select>
            <option value="n179">New York City</option>
            <option value="n136">London</option>
            <option value="n240">Sydney</option>
         </select>
         <div>
            <iframe src="https://freesecure.timeanddate.com/clock/i50r05un/n179/tluk/fs20/tct/pct/ftb/th" frameborder="0" width="90" height="38" allowTransparency="true"></iframe>
         </div>
      </div>
   </body>
</html>
$(document).ready(function() {
  $("select").change(function() {
    var value = $(this).val();
    $(this).parent().find('iframe').attr("src", "https://freesecure.timeanddate.com/clock/i50r05un/" + value + "/tluk/fs20/tct/pct/ftb/th");
  });
});