[英]Function producing undefined variable
我正在學習管理系統中工作,並創建了一些自定義組件
這將返回URL,但URL后面的“ course_syllabus_code”顯示為未定義。 我是Javascript的初學者,已經在谷歌上看了一些其他的答案,但仍然無法弄明白。
基本上用戶將能夠打開代碼並在頂部輸入變量(將有多個)。 然后在下面是應該發生所有魔術的地方...
輸入的變量的結構不能改變,但可能沒有以最佳方式執行“魔術”。
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink(course_syllabus_code) {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
<ul>
<li><a href="javascript:syllabusLink()"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
您將course_syllabus_code
作為參數傳遞給函數,但調用函數時沒有任何參數。 當您調用參數少於其定義的函數時,您未傳遞的函數將通過值undefined
來完成。 由於您已經為函數參數賦予了與全局相同的名稱,因此它會從函數中的代碼“陰影”(隱藏,隱藏)全局,而代碼將訪問參數。
你有三個選擇(只做其中一個 ,而不是全部):
通過刪除聲明的函數參數來使用全局變量:
function syllabusLink() { // Removed here ------^
或者 ,將全局傳遞給您調用它的函數:
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
我可能也改變了參數的名稱(這里我使用了scode
):
function syllabusLink(scode) { location.href = 'https://foo.com'+scode; }
或者 ,不要將course_syllabus_code
全局,並將其傳遞給函數:
<a href="javascript:syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a>
我可能會選擇#3,除非有確鑿的理由必須將其作為全局變量。
更改函數參數,因為它與局部變量的名稱相同。
var course_syllabus_code = "72524";
function syllabusLink(code) {
location.href = 'https://foo.com' + code;
}
您應該將course_syllabus_code
傳遞給href
屬性中的syllabusLink
。
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
試試這樣吧
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
因為在onClick()中您沒有傳遞任何參數。
course_syllabus_code是全局變量。您可以直接在函數中訪問。
這個位不正確:
javascript:syllabusLink()
您缺少參數,因此調用該函數
function syllabusLink(course_syllabus_code) {
沒有設置course_syllabus_code
的值。
除了bookmarklet,請不要使用javascript:protocol。
更好的代碼就是這個
<script type="text/javascript">
function syllabusLink(course_syllabus_code) {
location.href = 'https://foo.com/course?syllabus='+course_syllabus_code;
return false; // cancel link
}
</script>
<ul>
<li><a href="#" onclick="return syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
要么
這個
<script type="text/javascript">
var course_syllabus_code="72524";
function syllabusLink() {
location.href = 'https://foo.com/course?syllabus='+course_syllabus_code;
return false; // cancel link
}
</script>
<ul>
<li><a href="#" onclick="return syllabusLink()"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
答案很簡單,你需要通過course_syllabus_code
在參數function
。 只需從function
參數中刪除它並嘗試。
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
原因是course_syllabus_code
是全局變量。您可以直接在函數中訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.