- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的库除其他参数外,还采用名称数组,并创建一个 <select>
组合框,其中包含以该数组中的内容命名的 <option>
元素。它还将获取名称的索引值分配给 value
节点的 <option>
属性。因此,例如,如果数组的索引 0 包含“foo”,那么它将创建一个如下标记: <option value="0">foo</option>
。作为引用,以下是该库的代码:
function generateSelect(objDimensionAssoc, obj, select_name, label_name, function_name, state, DivAlignement)
{
//Valid object before
sChaine = "";
if( (obj != null) && (obj != undefined) && (obj != "") && (parseInt(countObject(obj)) > 0) ){
if( state == 'show' ){
sChaine +="<label for='"+select_name+"' ><span>"+label_name+"</span></label>\n";
sChaine +="<div class='"+DivAlignement+"'>\n";
if(function_name != "")
sChaine +="<select name='"+select_name+"' id='"+select_name+"' onchange='"+function_name+"' >\n";
else
sChaine +="<select name='"+select_name+"' id='"+select_name+"'>\n";
//lang = variable reconnu dans tout les pages
for (var x=0; x < obj.length; x++){
//One or two domentionnal array
if(obj[x] != null){
if(objDimensionAssoc == "1"){
if(chaineUrl){
sChaine += compare_and_create( x, obj[x], chaineUrl[select_name], select_name);
} else {
sChaine += compare_and_create( x, obj[x], "", select_name);
}
} else {
if(chaineUrl){
sChaine += compare_and_create( x, obj[x][lang], chaineUrl[select_name], select_name);
} else {
sChaine += compare_and_create( x, obj[x][lang], "", select_name);
}
}
}
}
sChaine +="</select>\n";
sChaine +="</div>\n";
}
return(sChaine);
} else {
//empty array
if( state == 'show' ){
sChaine +="<label for='"+select_name+"' ><span>"+label_name+"</span></label>\n";
sChaine +="<div class='"+DivAlignement+"'>\n";
sChaine +="<select name='"+select_name+"' id='"+select_name+"' disabled='true' >\n";
sChaine +="<option value='0'> </option>\n";
sChaine +="</select>\n";
sChaine +="</div>\n";
}
return(sChaine);
}
}
function compare_and_create( key, innerText, string_compare,select_name)
{
if(key == string_compare){
return ("<option value='"+key+"' selected='selected'>"+innerText+"</option>\n");
} else {
return ("<option value='"+key+"'>"+innerText+"</option>\n");
}
}
这是我称之为的地方:
myDiv = document.getElementById('tmp_stationDiv');
var stationsList = new Array();
stationsList = JSON.parse(<?php getStationList($regions); ?>);
myDiv.innerHTML = generateSelect("1",stationsList,
"slt_idStations",message["txt_choose_station"][lang],
'','show','blockDiv');
这是函数 getStationList()
的代码:
function getStationList($regions)
{
$slt_nomStations = (isset($_GET["slt_nomStations"]) ? $_GET["slt_nomStations"] : 0);;
$db = ConnectionFactory::getFactory()->getConnection();
$stmt = $db->prepare("SELECT DISTINCT S.station_id, S.name, SA.sub_area_name FROM dev.Station AS S INNER JOIN dbo.SubArea AS SA ON S.sub_area_id = SA.sub_area_id INNER JOIN data.MonthlyNormalData as MND ON MND.station_id = S.station_id WHERE sub_area_name = '$regions[$slt_nomStations]' AND value IS NOT NULL ORDER BY S.name ASC");
$stmt->execute();
$stations = array();
$lastStationName = "";
while ($row = $stmt->fetch())
{
if ($lastStationName != $row['name'])
{
array_push($stations, $row['name']);
$lastStationName = $row['name'];
}
}
$newJSArray = json_encode($stations);
echo json_encode($newJSArray);
}
现在一切正常了。例如,getStationList()
的输出是 "[\"LA GRANDE RIVIERE A\"]"
,然后我使用 JSON.parse()
将其转换为 JavaScript 数组。
不幸的是,与 value
节点关联的 <option>
将为 0, 1, 2, ..., n,其中 n 是站的数量 - 1。我想将站的名称与其站 ID 相关联(我从数据库中恢复)因此与 value
节点关联的 <option>
将是这些 ID。为此,我想我需要将电台名称推送到相应 ID 的索引处。我尝试通过对 getStationList()
进行以下修改来做到这一点:
function getStationList($regions)
{
$slt_nomStations = (isset($_GET["slt_nomStations"]) ? $_GET["slt_nomStations"] : 0);;
$db = ConnectionFactory::getFactory()->getConnection();
$stmt = $db->prepare("SELECT DISTINCT S.station_id, S.name, SA.sub_area_name FROM dev.Station AS S INNER JOIN dbo.SubArea AS SA ON S.sub_area_id = SA.sub_area_id INNER JOIN data.MonthlyNormalData as MND ON MND.station_id = S.station_id WHERE sub_area_name = '$regions[$slt_nomStations]' AND value IS NOT NULL ORDER BY S.name ASC");
$stmt->execute();
$IDs = array();
$names = array();
$stations = array();
$lastStationName = "";
while ($row = $stmt->fetch())
{
if ($lastStationName != $row['name'])
{
array_push($names, $row['name']);
array_push($IDs, $row['station_id']);
$lastStationName = $row['name'];
}
}
$stations = array_fill_keys($IDs, $names);
$newJSArray = json_encode($stations);
echo json_encode($newJSArray);
}
不幸的是,这不起作用,因为 getStationList()
函数的输出现在是这样的: "{\"6047\":[\"LA GRANDE RIVIERE A\"]}"
。那么我必须如何修改我的代码才能生成我的 <select>
节点及其子 <option>
节点,并将其 value
属性设置为每个相应站名称的 ID?
最佳答案
为什么不类似
$arr = array()
while ($row = $stmt->fetch()) {
$arr[$row['stationID']] = $row['stationName'];
}
您正在使用 array_push,它不允许您为推送的值指定键 - 您只会获得下一个更高的可用索引。因此,不要使用 array_*() 函数,而直接填充键/值对。
关于javascript - 将值添加到 PHP 数组中的特定键位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25042532/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!