使用全局变量的jquery对话框标题未定义

10 浏览
0 Comments

使用全局变量的jquery对话框标题未定义

我在代码中设置了一个变量,并将其设为全局变量,但由于某种原因,对话框显示为“未定义”。标题中不能使用变量吗?谢谢。

在.click事件中:

box = $('#EB_custref').val();

在函数外部:

var box;

对话框选项中:

title: '编辑框' + ' ' + box,

0
0 Comments

问题:jquery对话框标题为undefined,使用全局变量

原因:

- 可能是因为在使用全局变量时未正确赋值给对话框的标题属性,导致标题显示为undefined。

解决方法:

- 确保全局变量已正确赋值给对话框的标题属性。

示例代码:

// 全局变量定义
var dialogTitle = "对话框标题";
// 对话框初始化
$( "#dialog" ).dialog({
  title: dialogTitle, // 将全局变量赋值给对话框的标题属性
  // 对话框的其他属性...
});

通过以上方法,可以确保全局变量正确赋值给对话框的标题属性,避免出现标题为undefined的问题。

0
0 Comments

问题出现的原因是在实例化对话框时,title: 'Edit box' + ' ' + box这行代码会被执行,而此时box变量是未定义的。当你在click事件中设置box时已经太晚了,因为标题已经被设置好了。解决这个问题的方法是在click事件中实例化对话框,并将box变量作为参数传递给dialog()方法。以下是一种解决方法的示例代码:

HTML

<button data-title="Apple">OPEN 1</button>
<button data-title="Banana">OPEN 2</button>
<div id="MyDialog">
    Example Dialog Content
</div>

JQUERY

var globalTitle = ''; // Your global variable
// Startup operations
$(function () {
    $('#MyDialog').hide();
    $('button').click(function () { 
                          openMyDialog($(this).data('title')) 
                      });
});
// Open the dialog using the global myTitle variable
function openMyDialog(customTitle)
{
    globalTitle = customTitle;
    $('#MyDialog').dialog({title : globalTitle});
}

需要注意的是,使用了HTML5风格的data-属性,并通过jQuery的.data()函数来获取这些属性的值。另外,代码中使用了一个全局变量globalTitle,但实际上并不需要它。更好的做法是将customTitle直接传递给dialog()方法,如$('#MyDialog').dialog({title : customTitle});

这样就可以在点击事件中传递boxopenMyDialog函数。需要注意的是,在设置title时,box是未定义的,但在调用jAlert时,box已经被定义了。你需要理解JavaScript代码的生命周期,函数代码在被调用时才会执行。任何在函数外部的代码都会立即执行。

0