我正在从网格中读取数据,而对于我的生活,似乎无法找到一种方法来使本地var全局工作。我最近在这里得到了一些帮助,但似乎仍有问题。我已经发布了一小部分代码供您参考,如果有人可以取消它并告诉我哪里出错了,我将不胜感激?我已经声明了var titleitem ='';在函数之外,需要找到一种使用var = act_item部分代码创建全局变量的方法。我认为省略var,这成为一个全局var,可以在函数之外使用。在这种情况下,var titleitem。然后,这将在对话框中用作标题的一部分。 $('#actionform')。dialog({title:titleitem});
console.log中返回的所有内容都是(空字符串)。
由于
<!--- function to action data -->
<script type="text/javascript">
var titleitem = '';
</script>
<script type="text/javascript">
function action(com,grid) {
if(com == 'Action') {
if( $('.trSelected').length>0 ) {
var items = $('.trSelected');
var itemlist ='';
for(i=0;i<items.length;i++){
itemlist+= items[i].id.substr(3);
}
var act_id = $("tr.trSelected td:nth-child(1) div").text();
var act_location = $("tr.trSelected td:nth-child(2) div").text();
var act_service = $("tr.trSelected td:nth-child(3) div").text();
var act_activity = $("tr.trSelected td:nth-child(4) div").text();
var act_department = $("tr.trSelected td:nth-child(5) div").text();
var act_company = $("tr.trSelected td:nth-child(6) div").text();
var act_address = $("tr.trSelected td:nth-child(7) div").text();
var act_user = $("tr.trSelected td:nth-child(8) div").text();
act_item = $("tr.trSelected td:nth-child(9) div").text();
$titleitem = act_item;
+++++ UPDATE ++++++
$("#actionform").dialog({
autoOpen: false,
resizable: true,
modal: true,
title: "Input new intake"+titleitem,
width: 470,
beforeclose: function (event, ui) {
if(flag==1){
flag=0;
jAlert("You have successfully actioned\n\rBox: "+act_item+"\n\r",
'New Intake successfull');
}
$("#ACT_message").html("");
},
close: function (event, ui) {
$("#ACT_action").get(0).reset();
$("#ACT_message").html("");
}
});
答案 0 :(得分:4)
是的,这......
act_item = $("tr.trSelected td:nth-child(9) div").text();
...将是全球性的,但我认为最好通过在外部宣布你的函数来明确全局化......
var act_item;
function action(com,grid) {
...
}
...或明确地将其设为window
...
function action(com,grid) {
...
window.act_item = $("tr.trSelected td:nth-child(9) div").text();
}
虽然通常有一个比污染全局命名空间更好的解决方案。
另外,请注意这一点......
$titleitem = act_item;
...是与初始变量名称不同的变量名称,因为它以$
开头。
如果您的全局变量无效,请确保在尝试使用它们之前声明/初始化。
(您的代码未显示您正在执行的位置$('#actionform').dialog({title : titleitem});
。)
答案 1 :(得分:1)
您需要在“动作”功能中将变量命名为“titleitem”而不是“$ titleitem”。