Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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页面上的选择菜单,在不使用jquery mobile的情况下显示在android webview上_Javascript_Android_Jquery_Google Apps Script_Google Caja - Fatal编程技术网

Javascript 动态填充html页面上的选择菜单,在不使用jquery mobile的情况下显示在android webview上

Javascript 动态填充html页面上的选择菜单,在不使用jquery mobile的情况下显示在android webview上,javascript,android,jquery,google-apps-script,google-caja,Javascript,Android,Jquery,Google Apps Script,Google Caja,我使用google apps脚本制作了一个web应用程序,并将其部署到web上。该应用程序在PC上运行良好,但当我将其加载到android上的webview时,动态填充的菜单不会显示,它们是空的 我知道google caja在jquery mobile上有问题,所以我不能使用jquery mobile 问题是,是否有一种方法可以使菜单只使用jquery或javascript工作?或者我可以在安卓系统上玩些把戏 下面是我如何使用jquery填充菜单的示例: function addClients(

我使用google apps脚本制作了一个web应用程序,并将其部署到web上。该应用程序在PC上运行良好,但当我将其加载到android上的webview时,动态填充的菜单不会显示,它们是空的

我知道google caja在jquery mobile上有问题,所以我不能使用jquery mobile

问题是,是否有一种方法可以使菜单只使用jquery或javascript工作?或者我可以在安卓系统上玩些把戏

下面是我如何使用jquery填充菜单的示例:

function addClients(clients){   //array of options from google spreadsheets.
  $('#client').empty();
  for (var i in clients) {
    $('#client').append('<option>'+clients[i]+'</option>');
    $('#client').trigger("chosen:updated");
  }
}
先谢谢你

编辑: 看来菜单不新鲜。开始时,我有一个内置选项:

<option> ---- Choose a client ----</option>

简短回答:是的,这是绝对可能的。jQuery所做的几乎所有事情都在后台使用本机HTML/CSS/JavaScript功能。作为一个框架,它的存在只是为了使您的编码更快、更容易

如果选择has id client,则可以使用var selectClient=document.getElementByIdclient;来选择它

我不知道从哪里可以获得手动输入的选项,或者通过PHP API调用加载的选项,或者从数据库中获取的选项,所以我假设您可以访问要添加的选项

向客户端添加选项可以通过使用

selectClient.innerHTML += "<option>My option here</option>";
innerHTML属性基本上保存到之间的所有内容

如果要在添加新选项之前删除现有选项,只需先将innerHTML设置为空字符串。 如果要编辑特定的选项标记,则需要使用任何本机或jQuery方法来查找标记或ID(如果向选项添加ID以选择该选项)

希望这有帮助

另外,这个解决方案是纯JavaScript的,但是如果平台支持的话,您当然可以使用任何等价的jQuery函数。innerHTML属性的jQuery等价物是html,如$client.htmlFoo条中所示


编辑04-08-2014:由于OP没有使用他为jQuery调用的事件所选择的插件,但是上面描述的步骤仍然正确,如果没有使用所选择的,仍然适用。

我解决了这个问题。我所做的是在清空选择菜单并出于我的目的使用jquery ui的行中添加注释:

function addClients(clients){   //array of options from google spreadsheets.
  //$('#client').empty(); ---------- I commented this.
  for (var i in clients) {
    $('#client').append('<option>'+clients[i]+'</option>');
   // $('#client').trigger("chosen:updated"); ------- This line is also removed
  }
$(function() {  // And added jquery ui select menu
  $( "#client" ).selectmenu();
  });
}

这就成功了。我不知道为什么…

它不起作用。我更改的内容:“function addClientsclients{$'client.empty;var clientOptions=document.getElementByIdclient;对于客户端{clientOptions.innerHTML++=+clients[I]+;}}}中的var I,但在android中,我仍然会看到空的弹出菜单。您没有提到您正在使用所选的jQuery插件。当您在select上调用select或类似方法时,select会使用其自身的功能初始化select。我猜问题在于你做这件事的顺序。在选择“编辑”之前,请尝试执行“选择”的所有操作。@keshet另外,请尝试在正常的web环境中执行相同的代码,例如制作JS小提琴。如果你的代码在那里工作,那么这个问题是Android特定的,在这种情况下,你通常必须仔细考虑一些方法来尝试并逐个检查它们。我建议将您尝试的内容记录在一个小列表中,这样您就不会失去监督,并且可以快速查看是否还有未尝试的内容。正如我提到的,在正常的web环境中,在PC上,此web应用程序工作正常。这个问题在安卓系统方面存在。我尝试刷新select,不仅使用select,而且结果没有改变。此外,如果我在android上使用网络浏览器打开此web应用程序,一切正常。谢谢你的帮助。我感觉Selected和Google Caja之间的交互不太顺利,因为Caja是一个对第三方插件施加某些限制的安全模块。我认为这两个人之间的交流不起作用。尝试删除所选内容,首先只使用本机JS或jQuery中的JS。如果这不起作用,你也可以把它作为一个问题报告给谷歌,但我怀疑这个问题在没有选择的情况下不会成为一个问题。
$('#client').trigger("chosen:updated");

$('select').selectmenu('refresh');

$('#client').hide();
$('#client').show();

$('select#client').selectmenu('refresh');
selectClient.innerHTML += "<option>My option here</option>";
function addClients(clients){   //array of options from google spreadsheets.
  //$('#client').empty(); ---------- I commented this.
  for (var i in clients) {
    $('#client').append('<option>'+clients[i]+'</option>');
   // $('#client').trigger("chosen:updated"); ------- This line is also removed
  }
$(function() {  // And added jquery ui select menu
  $( "#client" ).selectmenu();
  });
}